/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 | } |