#include "ndpi_api.h" #include "fuzz_common_code.h" #include #include #include "fuzzer/FuzzedDataProvider.h" extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { FuzzedDataProvider fuzzed_data(data, size); u_int16_t i, num_iteration, num_learning_values; struct ndpi_jitter_struct *s; int rc; /* 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); s = (struct ndpi_jitter_struct *)ndpi_malloc(sizeof(*s)); num_learning_values = fuzzed_data.ConsumeIntegral(); rc = ndpi_jitter_init(s, num_learning_values); if (rc == 0) { num_iteration = fuzzed_data.ConsumeIntegral(); for (i = 0; i < num_iteration; i++) ndpi_jitter_add_value(s, fuzzed_data.ConsumeFloatingPoint()); ndpi_jitter_free(s); } ndpi_free(s); return 0; }