Coverage Report

Created: 2025-07-02 06:28

/src/ndpi/fuzz/fuzz_process_packet.c
Line
Count
Source
1
#include "ndpi_api.h"
2
#include "fuzz_common_code.h"
3
4
#include <stdint.h>
5
#include <stdio.h>
6
7
struct ndpi_detection_module_struct *ndpi_info_mod = NULL;
8
struct ndpi_flow_struct ndpi_flow;
9
static ndpi_serializer json_serializer = {};
10
static ndpi_serializer csv_serializer = {};
11
12
22.6k
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
13
22.6k
  uint8_t protocol_was_guessed;
14
15
22.6k
  if (ndpi_info_mod == NULL) {
16
1
    fuzz_init_detection_module(&ndpi_info_mod, NULL);
17
18
1
    ndpi_init_serializer(&json_serializer, ndpi_serialization_format_json);
19
1
    ndpi_init_serializer(&csv_serializer, ndpi_serialization_format_csv);
20
1
  }
21
22
22.6k
  memset(&ndpi_flow, 0, SIZEOF_FLOW_STRUCT);
23
22.6k
  ndpi_protocol detected_protocol =
24
22.6k
    ndpi_detection_process_packet(ndpi_info_mod, &ndpi_flow, Data, Size, 0, NULL);
25
22.6k
  ndpi_protocol guessed_protocol =
26
22.6k
    ndpi_detection_giveup(ndpi_info_mod, &ndpi_flow, &protocol_was_guessed);
27
28
22.6k
  ndpi_reset_serializer(&json_serializer);
29
22.6k
  ndpi_reset_serializer(&csv_serializer);
30
22.6k
  if (protocol_was_guessed == 0)
31
19.5k
  {
32
19.5k
    ndpi_dpi2json(ndpi_info_mod, &ndpi_flow, detected_protocol, &json_serializer);
33
19.5k
    ndpi_dpi2json(ndpi_info_mod, &ndpi_flow, detected_protocol, &csv_serializer);
34
19.5k
  } else {
35
3.14k
    ndpi_dpi2json(ndpi_info_mod, &ndpi_flow, guessed_protocol, &json_serializer);
36
3.14k
    ndpi_dpi2json(ndpi_info_mod, &ndpi_flow, guessed_protocol, &csv_serializer);
37
3.14k
  }
38
22.6k
  ndpi_free_flow_data(&ndpi_flow);
39
40
22.6k
  return 0;
41
22.6k
}