aboutsummaryrefslogtreecommitdiff
path: root/fuzz
diff options
context:
space:
mode:
authorPhilippe Antoine <contact@catenacyber.fr>2019-10-31 08:24:54 +0100
committerPhilippe Antoine <contact@catenacyber.fr>2019-10-31 08:37:42 +0100
commit148506ede87bbbcf8c475c9652c2b7e1b11ecc3a (patch)
tree446ca207563651f47187407c84c2cd39a179b825 /fuzz
parent1cd7cf99902b269f7e82e7f4bcbba978868bee59 (diff)
Adds fuzz target
And configur option enable-fuzztargets
Diffstat (limited to 'fuzz')
-rw-r--r--fuzz/Makefile.am13
-rw-r--r--fuzz/fuzz_process_packet.c28
2 files changed, 41 insertions, 0 deletions
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 <stdint.h>
+#include <stdio.h>
+
+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;
+}