/src/ndpi/fuzz/fuzz_alg_jitter.cpp
Line | Count | Source |
1 | | #include "ndpi_api.h" |
2 | | #include "fuzz_common_code.h" |
3 | | |
4 | | #include <stdint.h> |
5 | | #include <stdio.h> |
6 | | #include "fuzzer/FuzzedDataProvider.h" |
7 | | |
8 | 161 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { |
9 | 161 | FuzzedDataProvider fuzzed_data(data, size); |
10 | 161 | u_int16_t i, num_iteration, num_learning_values; |
11 | 161 | struct ndpi_jitter_struct *s; |
12 | 161 | int rc; |
13 | | |
14 | | /* Just to have some data */ |
15 | 161 | if(fuzzed_data.remaining_bytes() < 1024) |
16 | 18 | return -1; |
17 | | |
18 | | /* To allow memory allocation failures */ |
19 | 143 | fuzz_set_alloc_callbacks_and_seed(size); |
20 | | |
21 | 143 | s = (struct ndpi_jitter_struct *)ndpi_malloc(sizeof(*s)); |
22 | | |
23 | 143 | num_learning_values = fuzzed_data.ConsumeIntegral<u_int16_t>(); |
24 | 143 | rc = ndpi_jitter_init(s, num_learning_values); |
25 | | |
26 | 143 | if (rc == 0) { |
27 | 137 | num_iteration = fuzzed_data.ConsumeIntegral<u_int8_t>(); |
28 | 13.9k | for (i = 0; i < num_iteration; i++) |
29 | 13.8k | ndpi_jitter_add_value(s, fuzzed_data.ConsumeFloatingPoint<float>()); |
30 | | |
31 | 137 | ndpi_jitter_free(s); |
32 | 137 | } |
33 | 143 | ndpi_free(s); |
34 | | |
35 | 143 | return 0; |
36 | 161 | } |