aboutsummaryrefslogtreecommitdiff
path: root/fuzz/fuzz_is_stun.c
diff options
context:
space:
mode:
Diffstat (limited to 'fuzz/fuzz_is_stun.c')
-rw-r--r--fuzz/fuzz_is_stun.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/fuzz/fuzz_is_stun.c b/fuzz/fuzz_is_stun.c
new file mode 100644
index 000000000..b8b80c097
--- /dev/null
+++ b/fuzz/fuzz_is_stun.c
@@ -0,0 +1,38 @@
+#define NDPI_LIB_COMPILATION
+
+#include "ndpi_api.h"
+#include "fuzz_common_code.h"
+
+static struct ndpi_detection_module_struct *ndpi_struct = NULL;
+static struct ndpi_flow_struct ndpi_flow;
+#ifdef STUN_TCP
+struct ndpi_tcphdr tcph;
+#else
+struct ndpi_udphdr udph;
+#endif
+
+extern int is_stun(struct ndpi_detection_module_struct *ndpi_struct,
+ struct ndpi_flow_struct *flow,
+ u_int16_t *app_proto);
+
+
+int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+ u_int16_t app_proto; /* unused */
+ struct ndpi_packet_struct *packet;
+
+ if (ndpi_struct == NULL) {
+ fuzz_init_detection_module(&ndpi_struct);
+ }
+
+ packet = &ndpi_struct->packet;
+ packet->payload = data;
+ packet->payload_packet_len = size;
+#ifndef STUN_TCP
+ packet->udp = &udph;
+#else
+ packet->tcp = &tcph;
+#endif
+
+ is_stun(ndpi_struct, &ndpi_flow, &app_proto);
+ return 0;
+}