diff options
author | Ivan Nardi <12729895+IvanNardi@users.noreply.github.com> | 2023-07-18 07:41:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-18 07:41:56 +0200 |
commit | 3edfad01a1bb22b33bd5bafa0ceeb13e27f03e67 (patch) | |
tree | 6236e68075678a76a402e37f0ff09e5e273faf13 /fuzz/fuzz_ds_cmsketch.cpp | |
parent | 09548bb7cf661f42cc496c412ccfd62a864f5029 (diff) |
fuzz: extend fuzzing coverage (#2052)
Added/merged some traces.
Improved Socks identification
Diffstat (limited to 'fuzz/fuzz_ds_cmsketch.cpp')
-rw-r--r-- | fuzz/fuzz_ds_cmsketch.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/fuzz/fuzz_ds_cmsketch.cpp b/fuzz/fuzz_ds_cmsketch.cpp new file mode 100644 index 000000000..1181b1593 --- /dev/null +++ b/fuzz/fuzz_ds_cmsketch.cpp @@ -0,0 +1,35 @@ +#include "ndpi_api.h" +#include "fuzz_common_code.h" + +#include <stdint.h> +#include "fuzzer/FuzzedDataProvider.h" + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + FuzzedDataProvider fuzzed_data(data, size); + struct ndpi_cm_sketch *sketch; + u_int16_t i, num_hashes, num_iteration, num_lookup; + + /* Just to have some data */ + if (fuzzed_data.remaining_bytes() < 1024) + return -1; + + /* To allow memory allocation failures */ + fuzz_set_alloc_callbacks_and_seed(size); + + num_hashes = fuzzed_data.ConsumeIntegralInRange(0, 8192); + num_iteration = fuzzed_data.ConsumeIntegral<u_int8_t>(); + num_lookup = fuzzed_data.ConsumeIntegral<u_int8_t>(); + + sketch = ndpi_cm_sketch_init(num_hashes); + if (sketch) { + for (i = 0; i < num_iteration; i++) { + ndpi_cm_sketch_add(sketch, fuzzed_data.ConsumeIntegral<u_int32_t>()); + } + for (i = 0; i < num_lookup; i++) { + ndpi_cm_sketch_count(sketch, fuzzed_data.ConsumeIntegral<u_int32_t>()); + } + ndpi_cm_sketch_destroy(sketch); + } + + return 0; +} |