Coverage Report

Created: 2025-11-16 07:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/graphicsmagick/fuzzing/coder_fuzzer.cc
Line
Count
Source
1
#include <cstdint>
2
3
#include <Magick++.h>
4
5
#include "utils.cc"
6
7
365k
#define FUZZ_CODER_STRING_LITERAL_X(name) FUZZ_CODER_STRING_LITERAL(name)
8
365k
#define FUZZ_CODER_STRING_LITERAL(name) #name
9
10
365k
#define FUZZ_CODER FUZZ_CODER_STRING_LITERAL_X(FUZZ_GRAPHICSMAGICK_CODER)
11
12
13
365k
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
14
365k
  Magick::Image image;
15
365k
  std::string coder = FUZZ_CODER;
16
365k
#if !defined(FUZZ_GRAPHICSMAGICK_CODER_READANY)
17
365k
  image.magick(coder);
18
365k
  image.fileName(coder + ":");
19
365k
#endif
20
  // Add an arbitrary limit on JPEG scan lines
21
365k
  image.defineValue("JPEG", "max-scan-number", "50");
22
365k
  const Magick::Blob blob(data, size);
23
365k
  try {
24
365k
    image.read(blob);
25
365k
  } catch (Magick::Exception &e) {
26
283k
    return 0;
27
283k
  }
28
29
0
#if FUZZ_GRAPHICSMAGICK_CODER_WRITE
30
82.5k
  Magick::Blob outBlob;
31
82.5k
  try {
32
82.5k
    image.magick(coder);
33
82.5k
    image.write(&outBlob, coder);
34
82.5k
  } catch (Magick::Exception &e) {}
35
82.5k
#endif
36
37
82.5k
  return 0;
38
82.5k
}