From f066042785ad79207a6cc9a3c6b84ff2af453269 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Fri, 24 Feb 2012 21:09:33 -0700 Subject: [PATCH] add a fuzzer --- fuzz.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 fuzz.sh diff --git a/fuzz.sh b/fuzz.sh new file mode 100755 index 0000000..171e31c --- /dev/null +++ b/fuzz.sh @@ -0,0 +1,51 @@ +#! /bin/sh + +start () { + printf "%-20s [" "$@" +} + +fin () { + echo ']' +} + +failures=0 +fail () { + echo -n '!' + failures=$(expr $failures + 1) +} + +start "Full fuzz" +for i in $(seq 200); do + ./eris < /dev/urandom 2>/dev/null | grep -q '^HTTP/1.0 40' || fail + [ $(expr $i % 5) = 0 ] && echo -n '.' +done +fin + +start "Path" +for i in $(seq 200); do + ( + printf "GET /" + dd if=/dev/urandom count=2 2>/dev/null | tr -d '\0\r\n ?' + printf " HTTP/1.0\r\n\r\n" + ) | ./eris 2>/dev/null | grep -q '^HTTP/1.0 404' || fail + [ $(expr $i % 5) = 0 ] && echo -n '.' +done +fin + +start "Header" +for i in $(seq 200); do + ( + printf "GET / HTTP/1.0\r\n" + dd if=/dev/urandom count=2 2>/dev/null | tr -d '\0' + printf "\r\n\r\n" + ) | ./eris 2>/dev/null | grep -q '^HTTP/1.0 200' || fail + [ $(expr $i % 5) = 0 ] && echo -n '.' +done +fin + +if [ $failures -eq 0 ]; then + echo "All tests passed!" +else + echo "FAIL: $failures failures" + exit $failures +fi