diff --git a/test/afl/fuzzing-wrappers/fcns b/test/afl/fuzzing-wrappers/fcns index 63d548c9..f6d8b559 100755 --- a/test/afl/fuzzing-wrappers/fcns +++ b/test/afl/fuzzing-wrappers/fcns @@ -5,6 +5,17 @@ SERVER="../../server/.libs/fwknopd" CLIENT="../../client/.libs/fwknop" LIB_DIR="../../lib/.libs" +fw_type() { + ### default to iptables + FW="/iptables" + LD_LIBRARY_PATH=$LIB_DIR $SERVER --version | grep "firewall-cmd" + if [ "$?" = "0" ] + then + FW="/firewalld" + fi + eval "$2=$1$FW" +} + git_banner() { if [ -d '../../.git' ] && [ `which git` ] then diff --git a/test/afl/fuzzing-wrappers/helpers/fwknopd-parse-conf.sh b/test/afl/fuzzing-wrappers/helpers/fwknopd-parse-conf.sh index a463a6c1..fb030d76 100755 --- a/test/afl/fuzzing-wrappers/helpers/fwknopd-parse-conf.sh +++ b/test/afl/fuzzing-wrappers/helpers/fwknopd-parse-conf.sh @@ -1,6 +1,13 @@ #!/bin/sh -x -FWKNOPD_CONF_FILE="test-cases/server-conf/fwknopd.conf" +. ./fuzzing-wrappers/fcns + +IN_DIR_BASE="test-cases/server-conf" +IN_DIR='' +CONF_FILE="/fwknopd.conf" +fw_type $IN_DIR_BASE IN_DIR + +FWKNOPD_CONF_FILE="$IN_DIR$CONF_FILE" if [ $@ ] then diff --git a/test/afl/fuzzing-wrappers/server-conf.sh b/test/afl/fuzzing-wrappers/server-conf.sh index 7c11c198..972a8dce 100755 --- a/test/afl/fuzzing-wrappers/server-conf.sh +++ b/test/afl/fuzzing-wrappers/server-conf.sh @@ -9,7 +9,8 @@ FDIR="server-conf.out" OUT_DIR="$TOP_DIR/$FDIR" PREV_OUT_DIR='' -IN_DIR="test-cases/server-conf" +IN_DIR_BASE="test-cases/server-conf" +IN_DIR='' FUZZ_FILE=$OUT_DIR/afl_fwknopd.conf ### build up our afl-fuzz text banner @@ -18,6 +19,9 @@ GIT_STR='' git_banner GIT_STR BANNER="$TSTR$GIT_STR" +### point to the appropriate test cases (iptables vs. firewalld) +fw_type $IN_DIR_BASE IN_DIR + ### set up directories dir_init $ARCHIVE_DIR $FDIR $OUT_DIR PREV_OUT_DIR diff --git a/test/afl/test-cases/server-conf/firewalld/fwknopd.conf b/test/afl/test-cases/server-conf/firewalld/fwknopd.conf new file mode 100644 index 00000000..7feb78ed --- /dev/null +++ b/test/afl/test-cases/server-conf/firewalld/fwknopd.conf @@ -0,0 +1,47 @@ +#CONFIG_FILE ../conf/default_fwknopd.conf +#OVERRIDE_CONFIG ../conf/default_fwknopd.conf +PCAP_INTF eth0 +#PCAP_FILE +ENABLE_PCAP_PROMISC Y +PCAP_FILTER udp port 62201 +PCAP_DISPATCH_COUNT 100 +PCAP_LOOP_SLEEP 100000 +ENABLE_PCAP_ANY_DIRECTION Y +MAX_SNIFF_BYTES 1500 +ENABLE_SPA_PACKET_AGING Y +MAX_SPA_PACKET_AGE 120 +ENABLE_DIGEST_PERSISTENCE Y +CMD_EXEC_TIMEOUT 1 +ENABLE_SPA_OVER_HTTP N +ENABLE_TCP_SERVER N +TCPSERV_PORT 62201 +ENABLE_UDP_SERVER N +UDPSERV_PORT 62201 +UDPSERV_SELECT_TIMEOUT 500000 +LOCALE C +SYSLOG_IDENTITY fwknopd +SYSLOG_FACILITY LOG_DAEMON +ENABLE_FIREWD_FORWARDING N +ENABLE_FIREWD_LOCAL_NAT Y +ENABLE_FIREWD_SNAT N +SNAT_TRANSLATE_IP 1.2.3.4 +ENABLE_FIREWD_OUTPUT N +FLUSH_FIREWD_AT_INIT Y +FLUSH_FIREWD_AT_EXIT Y +FIREWD_INPUT_ACCESS ACCEPT, filter, INPUT, 1, FWKNOP_INPUT, 1 +FIREWD_OUTPUT_ACCESS ACCEPT, filter, OUTPUT, 1, FWKNOP_OUTPUT, 1 +FIREWD_FORWARD_ACCESS ACCEPT, filter, FORWARD, 1, FWKNOP_FORWARD, 1 +FIREWD_DNAT_ACCESS DNAT, nat, PREROUTING, 1, FWKNOP_PREROUTING, 1 +FIREWD_SNAT_ACCESS SNAT, nat, POSTROUTING, 1, FWKNOP_POSTROUTING, 1 +FIREWD_MASQUERADE_ACCESS MASQUERADE, nat, POSTROUTING, 1, FWKNOP_POSTROUTING, 1 +ENABLE_FIREWD_COMMENT_CHECK Y +FWKNOP_RUN_DIR /var/run/fwknop +FWKNOP_CONF_DIR /etc/fwknop +#ACCESS_FILE ../conf/default_access.conf +FWKNOP_PID_FILE /var/run/fwknop/fwknopd.pid +DIGEST_FILE /var/run/fwknop/digest.cache +GPG_HOME_DIR /root/.gnupg +GPG_EXE /usr/bin/gpg +FIREWALL_EXE /sbin/iptables +VERBOSE Y +#FAULT_INJECTION_TAG diff --git a/test/afl/test-cases/server-conf/fwknopd.conf b/test/afl/test-cases/server-conf/iptables/fwknopd.conf similarity index 100% rename from test/afl/test-cases/server-conf/fwknopd.conf rename to test/afl/test-cases/server-conf/iptables/fwknopd.conf