/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 | } |