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