/src/janet/test/fuzzers/fuzz_unmarshal.c
Line | Count | Source |
1 | | #include <stdint.h> |
2 | | #include <janet.h> |
3 | | |
4 | | /* Disable leak sanitizer */ |
5 | 0 | int __lsan_is_turned_off(void) { |
6 | 0 | return 1; |
7 | 0 | } |
8 | | |
9 | 10.3k | int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { |
10 | | |
11 | | /* init Janet */ |
12 | 10.3k | janet_init(); |
13 | | |
14 | | /* fuzz the binary unmarshal (deserialization) path in src/core/marsh.c */ |
15 | 10.3k | JanetTable *reg = janet_env_lookup(janet_core_env(NULL)); |
16 | 10.3k | JanetTryState tstate; |
17 | 10.3k | if (janet_try(&tstate) == JANET_SIGNAL_OK) { |
18 | 10.3k | const uint8_t *next = NULL; |
19 | 10.3k | janet_unmarshal(data, size, 0, reg, &next); |
20 | 10.3k | } |
21 | 10.3k | janet_restore(&tstate); |
22 | | |
23 | | /* cleanup Janet */ |
24 | 10.3k | janet_deinit(); |
25 | | |
26 | 10.3k | return 0; |
27 | 10.3k | } |