fuzz: Adds fuzz target for parse_jobs_ini
[fio.git] / t / fuzz / fuzz_parseini.c
CommitLineData
1857e6b2
PA
1#include "fio.h"
2
3static int initialized = 0;
4
5const char *const fakeargv[] = {(char *) "fuzz",
6 (char *) "--output", (char *) "/dev/null",
7 (char *) "--parse-only",
8 0};
9
10int 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}