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