diff --git a/test/afl/fuzzing-wrappers/helpers/fwknopd-enc-pkt-file.sh b/test/afl/fuzzing-wrappers/helpers/fwknopd-enc-pkt-file.sh new file mode 100755 index 00000000..bba9c18e --- /dev/null +++ b/test/afl/fuzzing-wrappers/helpers/fwknopd-enc-pkt-file.sh @@ -0,0 +1,5 @@ +#!/bin/sh -x + +LD_LIBRARY_PATH=../../lib/.libs ../../server/.libs/fwknopd -c ../conf/default_fwknopd.conf -a ../conf/default_access.conf -A --afl-pkt-file test-cases/enc-pkts/spa.enc -f -t + +exit $? diff --git a/test/afl/fuzzing-wrappers/server-enc-pkts.sh b/test/afl/fuzzing-wrappers/server-enc-pkts.sh new file mode 100755 index 00000000..6de58aaa --- /dev/null +++ b/test/afl/fuzzing-wrappers/server-enc-pkts.sh @@ -0,0 +1,43 @@ +#!/bin/sh -x + +# +# Fuzz SPA packet encoding/decoding +# + +. ./fuzzing-wrappers/fcns + +FDIR="enc-pkts.out" +OUT_DIR="$TOP_DIR/$FDIR" +PREV_OUT_DIR='' +IN_DIR="test-cases/enc-pkts" + +### build up our afl-fuzz text banner +TSTR="fwknopd,SPA,encrypt/decrypt" +GIT_STR='' +git_banner GIT_STR +BANNER="$TSTR$GIT_STR" + +### set up directories +dir_init $ARCHIVE_DIR $FDIR $OUT_DIR PREV_OUT_DIR + +### support resuming from a previous run +if [ $@ ] && [ "$1" = "resume" ] +then + IN_DIR=$PREV_OUT_DIR +fi + +### make sure that reading a packet works (this is expected to error +### out though since base64 decoding is short-circuited when AFL +### support is compiled in). +./fuzzing-wrappers/helpers/fwknopd-enc-pkt-file.sh + +LD_LIBRARY_PATH=$LIB_DIR afl-fuzz \ + -T $BANNER -t 1000 -i $IN_DIR \ + -o $OUT_DIR -f $OUT_DIR/afl_enc_pkt.data $SERVER \ + -c ../conf/default_fwknopd.conf \ + -a ../conf/default_access.conf \ + -O ../conf/override_no_digest_tracking_fwknopd.conf \ + -A --afl-pkt-file $OUT_DIR/afl_enc_pkt.data \ + -f -t -v -v -v -r `pwd`/run + +exit $? diff --git a/test/afl/test-cases/enc-pkts/spa.enc b/test/afl/test-cases/enc-pkts/spa.enc new file mode 100644 index 00000000..25dc1782 --- /dev/null +++ b/test/afl/test-cases/enc-pkts/spa.enc @@ -0,0 +1,3 @@ +Salted__+1m*NjNĬ8N:H:u~D +H9 /riـLGrvMĄ]MupPtfn +6(ʺڷGMtx \ No newline at end of file