summaryrefslogtreecommitdiff
path: root/testprogs/fuzz/fuzz_pcap.c
diff options
context:
space:
mode:
Diffstat (limited to 'testprogs/fuzz/fuzz_pcap.c')
-rw-r--r--testprogs/fuzz/fuzz_pcap.c80
1 files changed, 0 insertions, 80 deletions
diff --git a/testprogs/fuzz/fuzz_pcap.c b/testprogs/fuzz/fuzz_pcap.c
deleted file mode 100644
index fba5312fcaf2..000000000000
--- a/testprogs/fuzz/fuzz_pcap.c
+++ /dev/null
@@ -1,80 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <errno.h>
-
-#include <pcap/pcap.h>
-
-FILE * outfile = NULL;
-
-static int bufferToFile(const char * name, const uint8_t *Data, size_t Size) {
- FILE * fd;
- if (remove(name) != 0) {
- if (errno != ENOENT) {
- printf("failed remove, errno=%d\n", errno);
- return -1;
- }
- }
- fd = fopen(name, "wb");
- if (fd == NULL) {
- printf("failed open, errno=%d\n", errno);
- return -2;
- }
- if (fwrite (Data, 1, Size, fd) != Size) {
- fclose(fd);
- return -3;
- }
- fclose(fd);
- return 0;
-}
-
-void fuzz_openFile(const char * name) {
- if (outfile != NULL) {
- fclose(outfile);
- }
- outfile = fopen(name, "w");
-}
-
-int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
- pcap_t * pkts;
- char errbuf[PCAP_ERRBUF_SIZE];
- const u_char *pkt;
- struct pcap_pkthdr *header;
- struct pcap_stat stats;
- int r;
-
- //initialize output file
- if (outfile == NULL) {
- outfile = fopen("/dev/null", "w");
- if (outfile == NULL) {
- return 0;
- }
- }
-
- //rewrite buffer to a file as libpcap does not have buffer inputs
- if (bufferToFile("/tmp/fuzz.pcap", Data, Size) < 0) {
- return 0;
- }
-
- //initialize structure
- pkts = pcap_open_offline("/tmp/fuzz.pcap", errbuf);
- if (pkts == NULL) {
- fprintf(outfile, "Couldn't open pcap file %s\n", errbuf);
- return 0;
- }
-
- //loop over packets
- r = pcap_next_ex(pkts, &header, &pkt);
- while (r > 0) {
- //TODO pcap_offline_filter
- fprintf(outfile, "packet length=%d/%d\n",header->caplen, header->len);
- r = pcap_next_ex(pkts, &header, &pkt);
- }
- if (pcap_stats(pkts, &stats) == 0) {
- fprintf(outfile, "number of packets=%d\n", stats.ps_recv);
- }
- //close structure
- pcap_close(pkts);
-
- return 0;
-}