Coverage Report

Created: 2026-05-16 07:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/imagemagick/oss-fuzz/utils.cc
Line
Count
Source
1
/*
2
  Copyright @ 2018 ImageMagick Studio LLC, a non-profit organization
3
  dedicated to making software imaging solutions freely available.
4
5
  You may not use this file except in compliance with the License.  You may
6
  obtain a copy of the License at
7
8
    https://imagemagick.org/license/
9
10
  Unless required by applicable law or agreed to in writing, software
11
  distributed under the License is distributed on an "AS IS" BASIS,
12
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
  See the License for the specific language governing permissions and
14
  limitations under the License.
15
*/
16
17
#include <Magick++/Functions.h>
18
#include <Magick++/ResourceLimits.h>
19
#include <Magick++/SecurityPolicy.h>
20
21
#ifndef FUZZ_MAX_SIZE
22
588
#define FUZZ_MAX_SIZE 2048
23
#endif
24
25
static bool IsInvalidSize(const size_t size,const size_t min = 1)
26
607k
{
27
607k
  if (size < min)
28
0
    return(true);
29
607k
  if (size > 8192)
30
1.81k
    return(true);
31
605k
  return(false);
32
607k
}
encoder_fuzzer.cc:IsInvalidSize(unsigned long, unsigned long)
Line
Count
Source
26
549k
{
27
549k
  if (size < min)
28
0
    return(true);
29
549k
  if (size > 8192)
30
1.72k
    return(true);
31
547k
  return(false);
32
549k
}
encoder_plasma_fuzzer.cc:IsInvalidSize(unsigned long, unsigned long)
Line
Count
Source
26
3.95k
{
27
3.95k
  if (size < min)
28
0
    return(true);
29
3.95k
  if (size > 8192)
30
14
    return(true);
31
3.94k
  return(false);
32
3.95k
}
ping_fuzzer.cc:IsInvalidSize(unsigned long, unsigned long)
Line
Count
Source
26
30.3k
{
27
30.3k
  if (size < min)
28
0
    return(true);
29
30.3k
  if (size > 8192)
30
1
    return(true);
31
30.3k
  return(false);
32
30.3k
}
encoder_gradient_fuzzer.cc:IsInvalidSize(unsigned long, unsigned long)
Line
Count
Source
26
3.61k
{
27
3.61k
  if (size < min)
28
0
    return(true);
29
3.61k
  if (size > 8192)
30
12
    return(true);
31
3.60k
  return(false);
32
3.61k
}
huffman_decode_fuzzer.cc:IsInvalidSize(unsigned long, unsigned long)
Line
Count
Source
26
42
{
27
42
  if (size < min)
28
0
    return(true);
29
42
  if (size > 8192)
30
17
    return(true);
31
25
  return(false);
32
42
}
encoder_xc_fuzzer.cc:IsInvalidSize(unsigned long, unsigned long)
Line
Count
Source
26
3.50k
{
27
3.50k
  if (size < min)
28
0
    return(true);
29
3.50k
  if (size > 8192)
30
13
    return(true);
31
3.49k
  return(false);
32
3.50k
}
encoder_pattern_fuzzer.cc:IsInvalidSize(unsigned long, unsigned long)
Line
Count
Source
26
3.73k
{
27
3.73k
  if (size < min)
28
0
    return(true);
29
3.73k
  if (size > 8192)
30
12
    return(true);
31
3.72k
  return(false);
32
3.73k
}
encoder_label_fuzzer.cc:IsInvalidSize(unsigned long, unsigned long)
Line
Count
Source
26
9.44k
{
27
9.44k
  if (size < min)
28
0
    return(true);
29
9.44k
  if (size > 8192)
30
2
    return(true);
31
9.44k
  return(false);
32
9.44k
}
encoder_radial-gradient_fuzzer.cc:IsInvalidSize(unsigned long, unsigned long)
Line
Count
Source
26
3.67k
{
27
3.67k
  if (size < min)
28
0
    return(true);
29
3.67k
  if (size > 8192)
30
13
    return(true);
31
3.66k
  return(false);
32
3.67k
}
33
34
class FuzzingInitializer
35
{
36
public:
37
  FuzzingInitializer()
38
588
  {
39
    // Disable SIMD in jpeg turbo.
40
588
    (void) putenv(const_cast<char *>("JSIMD_FORCENONE=1"));
41
42
588
    Magick::InitializeMagick((const char *) NULL);
43
588
    Magick::SecurityPolicy::anonymousCacheMemoryMap();
44
588
    Magick::SecurityPolicy::anonymousSystemMemoryMap();
45
588
    Magick::SecurityPolicy::maxMemoryRequest(128000000);
46
588
    Magick::ResourceLimits::memory(1000000000);
47
588
    Magick::ResourceLimits::map(500000000);
48
588
    Magick::ResourceLimits::width(FUZZ_MAX_SIZE);
49
588
    Magick::ResourceLimits::height(FUZZ_MAX_SIZE);
50
588
    Magick::ResourceLimits::listLength(16);
51
588
  }
FuzzingInitializer::FuzzingInitializer()
Line
Count
Source
38
294
  {
39
    // Disable SIMD in jpeg turbo.
40
294
    (void) putenv(const_cast<char *>("JSIMD_FORCENONE=1"));
41
42
294
    Magick::InitializeMagick((const char *) NULL);
43
294
    Magick::SecurityPolicy::anonymousCacheMemoryMap();
44
294
    Magick::SecurityPolicy::anonymousSystemMemoryMap();
45
294
    Magick::SecurityPolicy::maxMemoryRequest(128000000);
46
294
    Magick::ResourceLimits::memory(1000000000);
47
294
    Magick::ResourceLimits::map(500000000);
48
294
    Magick::ResourceLimits::width(FUZZ_MAX_SIZE);
49
294
    Magick::ResourceLimits::height(FUZZ_MAX_SIZE);
50
294
    Magick::ResourceLimits::listLength(16);
51
294
  }
FuzzingInitializer::FuzzingInitializer()
Line
Count
Source
38
294
  {
39
    // Disable SIMD in jpeg turbo.
40
294
    (void) putenv(const_cast<char *>("JSIMD_FORCENONE=1"));
41
42
294
    Magick::InitializeMagick((const char *) NULL);
43
294
    Magick::SecurityPolicy::anonymousCacheMemoryMap();
44
294
    Magick::SecurityPolicy::anonymousSystemMemoryMap();
45
294
    Magick::SecurityPolicy::maxMemoryRequest(128000000);
46
294
    Magick::ResourceLimits::memory(1000000000);
47
294
    Magick::ResourceLimits::map(500000000);
48
294
    Magick::ResourceLimits::width(FUZZ_MAX_SIZE);
49
294
    Magick::ResourceLimits::height(FUZZ_MAX_SIZE);
50
294
    Magick::ResourceLimits::listLength(16);
51
294
  }
52
};
53
54
FuzzingInitializer fuzzingInitializer;
55
56
#if defined(BUILD_MAIN)
57
#include "encoder_format.h"
58
59
EncoderFormat encoderFormat;
60
61
#define FUZZ_ENCODER encoderFormat.get()
62
#endif