From 148506ede87bbbcf8c475c9652c2b7e1b11ecc3a Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Thu, 31 Oct 2019 08:24:54 +0100 Subject: Adds fuzz target And configur option enable-fuzztargets --- fuzz/Makefile.am | 13 +++++++++++++ fuzz/fuzz_process_packet.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 fuzz/Makefile.am create mode 100644 fuzz/fuzz_process_packet.c (limited to 'fuzz') diff --git a/fuzz/Makefile.am b/fuzz/Makefile.am new file mode 100644 index 000000000..4693d4076 --- /dev/null +++ b/fuzz/Makefile.am @@ -0,0 +1,13 @@ +bin_PROGRAMS = fuzz_process_packet + +fuzz_process_packet_SOURCES = fuzz_process_packet.c +fuzz_process_packet_LDFLAGS = ../src/lib/libndpi.a +if HAS_FUZZLDFLAGS + fuzz_process_packet_LDFLAGS += $(LIB_FUZZING_ENGINE) +else + fuzz_process_packet_SOURCES += onefile.c +endif +# force usage of CXX for linker +fuzz_process_packet_LINK=$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXX) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(fuzz_process_packet_LDFLAGS) $(LDFLAGS) -o $@ diff --git a/fuzz/fuzz_process_packet.c b/fuzz/fuzz_process_packet.c new file mode 100644 index 000000000..88319b419 --- /dev/null +++ b/fuzz/fuzz_process_packet.c @@ -0,0 +1,28 @@ +#include "ndpi_api.h" + +#include +#include + +struct ndpi_detection_module_struct *ndpi_info_mod = NULL; +struct ndpi_flow_struct *ndpi_flow; +struct ndpi_id_struct *src; +struct ndpi_id_struct *dst; + +int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { + if (ndpi_info_mod == NULL) { + ndpi_info_mod = ndpi_init_detection_module(); + NDPI_PROTOCOL_BITMASK all; + NDPI_BITMASK_SET_ALL(all); + ndpi_set_protocol_detection_bitmask2(ndpi_info_mod, &all); + ndpi_flow = ndpi_flow_malloc(SIZEOF_FLOW_STRUCT); + src = ndpi_malloc(SIZEOF_ID_STRUCT); + dst = ndpi_malloc(SIZEOF_ID_STRUCT); + } + + memset(ndpi_flow, 0, SIZEOF_FLOW_STRUCT); + memset(src, 0, SIZEOF_ID_STRUCT); + memset(dst, 0, SIZEOF_ID_STRUCT); + ndpi_detection_process_packet(ndpi_info_mod, ndpi_flow, Data, Size, 0, src, dst); + + return 0; +} -- cgit v1.2.3