Commit | Line | Data |
---|---|---|
1857e6b2 PA |
1 | #include "fio.h" |
2 | ||
3 | static int initialized = 0; | |
4 | ||
5 | const char *const fakeargv[] = {(char *) "fuzz", | |
6 | (char *) "--output", (char *) "/dev/null", | |
7 | (char *) "--parse-only", | |
8 | 0}; | |
9 | ||
10 | int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) | |
11 | { | |
12 | char *fuzzedini; | |
13 | ||
14 | if (size < 2) | |
15 | return 0; | |
16 | ||
17 | if (initialized == 0) { | |
18 | if (fio_init_options()) { | |
19 | printf("Failed fio_init_options\n"); | |
20 | return 1; | |
21 | } | |
22 | ||
23 | parse_cmd_line(4, (char **) fakeargv, 0); | |
24 | sinit(); | |
25 | ||
26 | initialized = 1; | |
27 | } | |
28 | fuzzedini = malloc(size); | |
29 | if (!fuzzedini) { | |
30 | printf("Failed malloc\n"); | |
31 | return 1; | |
32 | } | |
33 | /* final character is type for parse_jobs_ini */ | |
34 | memcpy(fuzzedini, data, size - 1); | |
35 | /* ensures final 0 */ | |
36 | fuzzedini[size - 1] = 0; | |
37 | ||
38 | parse_jobs_ini(fuzzedini, 1, 0, data[size - 1]); | |
39 | free(fuzzedini); | |
40 | return 0; | |
41 | } |