From 29be01ef3a111fe467eb59876864574c168560df Mon Sep 17 00:00:00 2001 From: Ivan Nardi <12729895+IvanNardi@users.noreply.github.com> Date: Tue, 17 Jan 2023 08:31:59 +0100 Subject: Add some fuzzers to test algorithms and data structures (#1852) Fix some issues found with these new fuzzers --- fuzz/fuzz_alg_hll.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 fuzz/fuzz_alg_hll.cpp (limited to 'fuzz/fuzz_alg_hll.cpp') diff --git a/fuzz/fuzz_alg_hll.cpp b/fuzz/fuzz_alg_hll.cpp new file mode 100644 index 000000000..85733da63 --- /dev/null +++ b/fuzz/fuzz_alg_hll.cpp @@ -0,0 +1,46 @@ +#include "ndpi_api.h" +#include "fuzz_common_code.h" + +#include +#include +#include "fuzzer/FuzzedDataProvider.h" + +struct ndpi_detection_module_struct *ndpi_info_mod = NULL; + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + FuzzedDataProvider fuzzed_data(data, size); + u_int16_t i, num_iteration; + struct ndpi_hll hll; + + /* Just to have some data */ + if(fuzzed_data.remaining_bytes() < 2048) + return -1; + + /* We don't really need the detection module, but this way we can enable + memory allocation failures */ + if (ndpi_info_mod == NULL) { + fuzz_init_detection_module(&ndpi_info_mod, 0); + } + + ndpi_hll_init(&hll, fuzzed_data.ConsumeIntegral()); + + num_iteration = fuzzed_data.ConsumeIntegral(); + for (i = 0; i < num_iteration; i++) + ndpi_hll_add_number(&hll, fuzzed_data.ConsumeIntegral()); + + ndpi_hll_count(&hll); + + ndpi_hll_reset(&hll); + + num_iteration = fuzzed_data.ConsumeIntegral(); + for (i = 0; i < num_iteration; i++) { + std::vectordata = fuzzed_data.ConsumeBytes(fuzzed_data.ConsumeIntegral()); + ndpi_hll_add(&hll, (char *)data.data(), data.size()); + } + + ndpi_hll_count(&hll); + + ndpi_hll_destroy(&hll); + + return 0; +} -- cgit v1.2.3