Coverage Report

Created: 2025-01-28 06:33

/src/libvips/fuzz/thumbnail_fuzzer.cc
Line
Count
Source (jump to first uncovered line)
1
#include <vips/vips.h>
2
3
extern "C" int
4
LLVMFuzzerInitialize(int *argc, char ***argv)
5
2
{
6
2
  if (VIPS_INIT(*argv[0]))
7
0
    return -1;
8
9
2
  vips_concurrency_set(1);
10
2
  return 0;
11
2
}
12
13
extern "C" int
14
LLVMFuzzerTestOneInput(const guint8 *data, size_t size)
15
33.0k
{
16
33.0k
  VipsImage *image, *out;
17
33.0k
  double d;
18
19
33.0k
  if (!(image = vips_image_new_from_buffer(data, size, "", nullptr)))
20
10.5k
    return 0;
21
22
22.4k
  if (image->Xsize > 100 ||
23
22.4k
    image->Ysize > 100 ||
24
22.4k
    image->Bands > 4) {
25
1.33k
    g_object_unref(image);
26
1.33k
    return 0;
27
1.33k
  }
28
29
21.0k
  if (vips_thumbnail_image(image, &out, 42, nullptr)) {
30
53
    g_object_unref(image);
31
53
    return 0;
32
53
  }
33
34
21.0k
  vips_avg(out, &d, nullptr);
35
36
21.0k
  g_object_unref(out);
37
21.0k
  g_object_unref(image);
38
39
21.0k
  return 0;
40
21.0k
}