/src/jpegoptim/fuzz/fuzz_compression.c
Line | Count | Source |
1 | | #include <stdint.h> |
2 | | #include "fuzz_manager.h" |
3 | | #include "jpegoptim.h" |
4 | | |
5 | | int LLVMFuzzerTestOneInput(const uint8_t *data, const size_t size) |
6 | 0 | { |
7 | 0 | int rc = -1; |
8 | 0 | struct stat file_stat; |
9 | |
|
10 | 0 | fuzz_manager_init(); |
11 | |
|
12 | 0 | if (0 != lstat(fuzz_manager.fuzz_file_name, &file_stat)) { |
13 | | // Getting file stat failed |
14 | 0 | goto end; |
15 | 0 | } |
16 | | |
17 | | // Write data to fuzz file |
18 | 0 | FILE *fuzz_file = fopen(fuzz_manager.fuzz_file_name, "wb+"); |
19 | |
|
20 | 0 | if (!fuzz_file) { |
21 | 0 | goto end; |
22 | 0 | } |
23 | | |
24 | 0 | if (size != fwrite(data, sizeof(uint8_t), size, fuzz_file)) { |
25 | 0 | goto end; |
26 | 0 | } |
27 | 0 | fclose(fuzz_file); |
28 | |
|
29 | 0 | optimize( |
30 | 0 | fuzz_manager.log_fh, |
31 | 0 | fuzz_manager.fuzz_file_name, |
32 | 0 | fuzz_manager.new_fuzz_file_name, |
33 | 0 | fuzz_manager.tmp_dir, |
34 | 0 | &file_stat, |
35 | 0 | &fuzz_manager.rate, |
36 | 0 | &fuzz_manager.saved |
37 | 0 | ); |
38 | |
|
39 | 0 | rc = 0; |
40 | |
|
41 | 0 | end: |
42 | 0 | return rc; |
43 | 0 | } |