Coverage Report

Created: 2026-10-31 07:18

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/ndpi/fuzz/fuzz_ds_cmsketch.cpp
Line
Count
Source
1
#include "ndpi_api.h"
2
#include "fuzz_common_code.h"
3
4
#include <stdint.h>
5
#include "fuzzer/FuzzedDataProvider.h"
6
7
183
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
8
183
  FuzzedDataProvider fuzzed_data(data, size);
9
183
  struct ndpi_cm_sketch *sketch;
10
183
  u_int16_t i, num_hashes, num_iteration, num_lookup;
11
12
  /* Just to have some data */
13
183
  if (fuzzed_data.remaining_bytes() < 1024)
14
18
    return -1;
15
16
  /* To allow memory allocation failures */
17
165
  fuzz_set_alloc_callbacks_and_seed(size);
18
19
165
  num_hashes = fuzzed_data.ConsumeIntegralInRange(0, 8192);
20
165
  num_iteration = fuzzed_data.ConsumeIntegral<u_int8_t>();
21
165
  num_lookup = fuzzed_data.ConsumeIntegral<u_int8_t>();
22
23
165
  sketch = ndpi_cm_sketch_init(num_hashes);
24
165
  if (sketch) {
25
14.9k
    for (i = 0; i < num_iteration; i++) { 
26
14.8k
      ndpi_cm_sketch_add(sketch, fuzzed_data.ConsumeIntegral<u_int32_t>());
27
14.8k
    }
28
17.2k
    for (i = 0; i < num_lookup; i++) { 
29
17.1k
      ndpi_cm_sketch_count(sketch, fuzzed_data.ConsumeIntegral<u_int32_t>());
30
17.1k
    }
31
157
    ndpi_cm_sketch_destroy(sketch);
32
157
  }
33
34
165
  return 0;
35
183
}