aboutsummaryrefslogtreecommitdiff
path: root/fuzz/fuzz_alg_hll.cpp
diff options
context:
space:
mode:
authorIvan Nardi <12729895+IvanNardi@users.noreply.github.com>2023-01-17 08:31:59 +0100
committerGitHub <noreply@github.com>2023-01-17 08:31:59 +0100
commit29be01ef3a111fe467eb59876864574c168560df (patch)
tree21647815b717f009ea47413d1965eb4d0a1bb61f /fuzz/fuzz_alg_hll.cpp
parentebb9ebd2a0a1536cb8f9d9dc510f52f33ed78eab (diff)
Add some fuzzers to test algorithms and data structures (#1852)
Fix some issues found with these new fuzzers
Diffstat (limited to 'fuzz/fuzz_alg_hll.cpp')
-rw-r--r--fuzz/fuzz_alg_hll.cpp46
1 files changed, 46 insertions, 0 deletions
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 <stdint.h>
+#include <stdio.h>
+#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<u_int16_t>());
+
+ num_iteration = fuzzed_data.ConsumeIntegral<u_int8_t>();
+ for (i = 0; i < num_iteration; i++)
+ ndpi_hll_add_number(&hll, fuzzed_data.ConsumeIntegral<u_int32_t>());
+
+ ndpi_hll_count(&hll);
+
+ ndpi_hll_reset(&hll);
+
+ num_iteration = fuzzed_data.ConsumeIntegral<u_int8_t>();
+ for (i = 0; i < num_iteration; i++) {
+ std::vector<int8_t>data = fuzzed_data.ConsumeBytes<int8_t>(fuzzed_data.ConsumeIntegral<u_int8_t>());
+ ndpi_hll_add(&hll, (char *)data.data(), data.size());
+ }
+
+ ndpi_hll_count(&hll);
+
+ ndpi_hll_destroy(&hll);
+
+ return 0;
+}