1
0
mirror of https://github.com/janet-lang/janet synced 2024-12-01 20:39:55 +00:00
janet/test/fuzzers/fuzz_dostring.c

46 lines
1.1 KiB
C
Raw Normal View History

2020-04-13 16:33:58 +00:00
#include <stdint.h>
#include <string.h>
#include <janet.h>
2020-04-17 18:39:23 +00:00
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
/* init Janet */
janet_init();
/* fuzz the parser */
JanetParser parser;
janet_parser_init(&parser);
for (int i = 0, done = 0; i < size; i++) {
switch (janet_parser_status(&parser)) {
case JANET_PARSE_DEAD:
case JANET_PARSE_ERROR:
done = 1;
break;
case JANET_PARSE_PENDING:
if (i == size) {
janet_parser_eof(&parser);
} else {
janet_parser_consume(&parser, data[i]);
}
break;
case JANET_PARSE_ROOT:
if (i >= size) {
janet_parser_eof(&parser);
} else {
janet_parser_consume(&parser, data[i]);
}
break;
}
if (done == 1)
break;
}
janet_parser_deinit(&parser);
2020-04-13 16:33:58 +00:00
/* cleanup Janet */
2020-04-17 18:39:23 +00:00
janet_deinit();
2020-04-13 16:33:58 +00:00
2020-04-17 18:39:23 +00:00
return 0;
2020-04-13 16:33:58 +00:00
}