Coverage Report

Created: 2026-02-26 06:23

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