Coverage Report

Created: 2025-07-11 06:28

/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
6.42k
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
6
7
    /* init Janet */
8
6.42k
    janet_init();
9
10
    /* fuzz the parser */
11
6.42k
    JanetParser parser;
12
6.42k
    janet_parser_init(&parser);
13
69.6M
    for (int i = 0, done = 0; i < size; i++) {
14
69.6M
        switch (janet_parser_status(&parser)) {
15
0
            case JANET_PARSE_DEAD:
16
123
            case JANET_PARSE_ERROR:
17
123
                done = 1;
18
123
                break;
19
69.5M
            case JANET_PARSE_PENDING:
20
69.5M
                if (i == size) {
21
0
                    janet_parser_eof(&parser);
22
69.5M
                } else {
23
69.5M
                    janet_parser_consume(&parser, data[i]);
24
69.5M
                }
25
69.5M
                break;
26
62.0k
            case JANET_PARSE_ROOT:
27
62.0k
                if (i >= size) {
28
0
                    janet_parser_eof(&parser);
29
62.0k
                } else {
30
62.0k
                    janet_parser_consume(&parser, data[i]);
31
62.0k
                }
32
62.0k
                break;
33
69.6M
        }
34
35
69.6M
        if (done == 1)
36
123
            break;
37
69.6M
    }
38
6.42k
    janet_parser_deinit(&parser);
39
40
    /* cleanup Janet */
41
6.42k
    janet_deinit();
42
43
6.42k
    return 0;
44
6.42k
}
45