Coverage Report

Created: 2023-06-07 06:47

/src/janet/test/fuzzers/fuzz_dostring.c
Line
Count
Source (jump to first uncovered line)
1
#include <stdint.h>
2
#include <string.h>
3
#include <janet.h>
4
5
5.24k
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
6
7
    /* init Janet */
8
5.24k
    janet_init();
9
10
    /* fuzz the parser */
11
5.24k
    JanetParser parser;
12
5.24k
    janet_parser_init(&parser);
13
65.2M
    for (int i = 0, done = 0; i < size; i++) {
14
65.2M
        switch (janet_parser_status(&parser)) {
15
0
            case JANET_PARSE_DEAD:
16
108
            case JANET_PARSE_ERROR:
17
108
                done = 1;
18
108
                break;
19
65.1M
            case JANET_PARSE_PENDING:
20
65.1M
                if (i == size) {
21
0
                    janet_parser_eof(&parser);
22
65.1M
                } else {
23
65.1M
                    janet_parser_consume(&parser, data[i]);
24
65.1M
                }
25
65.1M
                break;
26
40.1k
            case JANET_PARSE_ROOT:
27
40.1k
                if (i >= size) {
28
0
                    janet_parser_eof(&parser);
29
40.1k
                } else {
30
40.1k
                    janet_parser_consume(&parser, data[i]);
31
40.1k
                }
32
40.1k
                break;
33
65.2M
        }
34
35
65.2M
        if (done == 1)
36
108
            break;
37
65.2M
    }
38
5.24k
    janet_parser_deinit(&parser);
39
40
    /* cleanup Janet */
41
5.24k
    janet_deinit();
42
43
5.24k
    return 0;
44
5.24k
}
45