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