Coverage Report

Created: 2025-09-04 07:51

/src/fluent-bit/tests/internal/fuzzers/parse_logfmt_fuzzer.c
Line
Count
Source
1
#include <stdint.h>
2
#include <string.h>
3
#include <stdlib.h>
4
#include <fluent-bit/flb_time.h>
5
#include <fluent-bit/flb_parser.h>
6
7
1.62k
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size){
8
1.62k
    void *out_buf = NULL;
9
1.62k
    size_t out_size = 0;
10
1.62k
    struct flb_time out_time;
11
1.62k
    struct flb_config *fuzz_config;
12
1.62k
    struct flb_parser *fuzz_parser;
13
14
    /* Set flb_malloc_mod to be fuzzer-data dependent */
15
1.62k
    if (size < 4) {
16
2
        return 0;
17
2
    }
18
1.62k
    flb_malloc_p = 0;
19
1.62k
    flb_malloc_mod = *(int*)data;
20
1.62k
    data += 4;
21
1.62k
    size -= 4;
22
23
    /* Avoid division by zero for modulo operations */
24
1.62k
    if (flb_malloc_mod == 0) {
25
2
        flb_malloc_mod = 1;
26
2
    }
27
28
    /* logfmt parser */
29
1.62k
    fuzz_config = flb_config_init();
30
1.62k
    if (fuzz_config == NULL) {
31
146
        return 0;
32
146
    }
33
1.47k
    fuzz_parser = flb_parser_create("fuzzer", "logfmt", NULL, FLB_TRUE,
34
1.47k
                                    NULL, NULL, NULL, MK_FALSE,
35
1.47k
                                    MK_TRUE, FLB_FALSE, FLB_FALSE, NULL, 0,
36
1.47k
                                    NULL, fuzz_config);
37
1.47k
    if (fuzz_parser) {
38
1.47k
        flb_parser_do(fuzz_parser, (char*)data, size,
39
1.47k
                      &out_buf, &out_size, &out_time);
40
41
1.47k
        if (out_buf != NULL) {
42
1.41k
            free(out_buf);
43
1.41k
        }
44
1.47k
        flb_parser_destroy(fuzz_parser);
45
1.47k
    }
46
47
1.47k
    flb_config_exit(fuzz_config);
48
49
1.47k
    return 0;
50
1.62k
}