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