diff options
Diffstat (limited to 'fuzz/fuzz_alg_bins.cpp')
-rw-r--r-- | fuzz/fuzz_alg_bins.cpp | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/fuzz/fuzz_alg_bins.cpp b/fuzz/fuzz_alg_bins.cpp index cce530940..7bda2778b 100644 --- a/fuzz/fuzz_alg_bins.cpp +++ b/fuzz/fuzz_alg_bins.cpp @@ -8,7 +8,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { FuzzedDataProvider fuzzed_data(data, size); u_int16_t j, i, num_iteration; - struct ndpi_bin b, *b_cloned, *bins; + struct ndpi_bin *b, *b_cloned, *bins, b2; u_int16_t num_bins, num_cluster_ids, num_element, num_allocated_bins, rc; enum ndpi_bin_family family; u_int16_t *cluster_ids; @@ -21,42 +21,53 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { /* To allow memory allocation failures */ fuzz_set_alloc_callbacks_and_seed(size); + b = (struct ndpi_bin *)ndpi_malloc(sizeof(struct ndpi_bin)); + num_bins = fuzzed_data.ConsumeIntegral<u_int16_t>(); family = fuzzed_data.ConsumeEnum<enum ndpi_bin_family>(); - ndpi_init_bin(&b, family, num_bins); + ndpi_init_bin(b, family, num_bins); + ndpi_init_bin(&b2, family, num_bins * 2); num_iteration = fuzzed_data.ConsumeIntegral<u_int8_t>(); - for (i = 0; i < num_iteration; i++) - ndpi_inc_bin(&b, fuzzed_data.ConsumeIntegral<u_int16_t>(), + for (i = 0; i < num_iteration; i++) { + ndpi_inc_bin(b, fuzzed_data.ConsumeIntegral<u_int16_t>(), + fuzzed_data.ConsumeIntegral<u_int64_t>()); + ndpi_inc_bin(&b2, fuzzed_data.ConsumeIntegral<u_int16_t>(), fuzzed_data.ConsumeIntegral<u_int64_t>()); + } + + ndpi_bin_similarity(b, &b2, fuzzed_data.ConsumeBool(), + fuzzed_data.ConsumeFloatingPointInRange<float>(0, 1)); - b_cloned = ndpi_clone_bin(&b); + b_cloned = ndpi_clone_bin(b); - ndpi_bin_similarity(&b, b_cloned, fuzzed_data.ConsumeBool(), + ndpi_bin_similarity(b, b_cloned, fuzzed_data.ConsumeBool(), fuzzed_data.ConsumeFloatingPointInRange<float>(0, 1)); for (i = 0; i < num_iteration; i++) - ndpi_get_bin_value(&b, fuzzed_data.ConsumeIntegral<u_int16_t>()); + ndpi_get_bin_value(b, fuzzed_data.ConsumeIntegral<u_int16_t>()); - ndpi_reset_bin(&b); + ndpi_reset_bin(b); for (i = 0; i < num_iteration; i++) - ndpi_get_bin_value(&b, fuzzed_data.ConsumeIntegral<u_int16_t>()); + ndpi_get_bin_value(b, fuzzed_data.ConsumeIntegral<u_int16_t>()); for (i = 0; i < num_iteration; i++) ndpi_set_bin(b_cloned, fuzzed_data.ConsumeIntegral<u_int16_t>(), fuzzed_data.ConsumeIntegral<u_int64_t>()); - ndpi_bin_similarity(&b, b_cloned, fuzzed_data.ConsumeBool(), + ndpi_bin_similarity(b, b_cloned, fuzzed_data.ConsumeBool(), fuzzed_data.ConsumeFloatingPointInRange<float>(0, 1)); - ndpi_normalize_bin(&b); + ndpi_normalize_bin(b); ndpi_normalize_bin(b_cloned); - ndpi_print_bin(&b, fuzzed_data.ConsumeBool(), buf, sizeof(buf)); + ndpi_print_bin(b, fuzzed_data.ConsumeBool(), buf, sizeof(buf)); - ndpi_free_bin(&b); + ndpi_free_bin(b); + ndpi_free(b); + ndpi_free_bin(&b2); ndpi_free_bin(b_cloned); ndpi_free(b_cloned); |