aboutsummaryrefslogtreecommitdiff
path: root/fuzz/fuzz_ndpi_reader.c
diff options
context:
space:
mode:
Diffstat (limited to 'fuzz/fuzz_ndpi_reader.c')
-rw-r--r--fuzz/fuzz_ndpi_reader.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/fuzz/fuzz_ndpi_reader.c b/fuzz/fuzz_ndpi_reader.c
index 4360bbb55..9f73eb4e9 100644
--- a/fuzz/fuzz_ndpi_reader.c
+++ b/fuzz/fuzz_ndpi_reader.c
@@ -80,11 +80,17 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
r = pcap_next_ex(pkts, &header, &pkt);
while (r > 0) {
- /* allocate an exact size buffer to check overflows */
- uint8_t *packet_checked = malloc(header->caplen);
- memcpy(packet_checked, pkt, header->caplen);
- ndpi_workflow_process_packet(workflow, header, packet_checked, NULL);
- free(packet_checked);
+ if(header->caplen >= 42 /* ARP+ size */) {
+ /* allocate an exact size buffer to check overflows */
+ uint8_t *packet_checked = malloc(header->caplen);
+
+ if(packet_checked) {
+ memcpy(packet_checked, pkt, header->caplen);
+ ndpi_workflow_process_packet(workflow, header, packet_checked, NULL);
+ free(packet_checked);
+ }
+ }
+
r = pcap_next_ex(pkts, &header, &pkt);
}
ndpi_workflow_free(workflow);