Neale Pickett
·
2012-02-24
fuzz.sh
1#! /bin/sh
2
3start () {
4 printf "%-20s [" "$@"
5}
6
7fin () {
8 echo ']'
9}
10
11failures=0
12fail () {
13 echo -n '!'
14 failures=$(expr $failures + 1)
15}
16
17start "Full fuzz"
18for i in $(seq 200); do
19 ./eris < /dev/urandom 2>/dev/null | grep -q '^HTTP/1.0 40' || fail
20 [ $(expr $i % 5) = 0 ] && echo -n '.'
21done
22fin
23
24start "Path"
25for i in $(seq 200); do
26 (
27 printf "GET /"
28 dd if=/dev/urandom count=2 2>/dev/null | tr -d '\0\r\n ?'
29 printf " HTTP/1.0\r\n\r\n"
30 ) | ./eris 2>/dev/null | grep -q '^HTTP/1.0 404' || fail
31 [ $(expr $i % 5) = 0 ] && echo -n '.'
32done
33fin
34
35start "Header"
36for i in $(seq 200); do
37 (
38 printf "GET / HTTP/1.0\r\n"
39 dd if=/dev/urandom count=2 2>/dev/null | tr -d '\0'
40 printf "\r\n\r\n"
41 ) | ./eris 2>/dev/null | grep -q '^HTTP/1.0 200' || fail
42 [ $(expr $i % 5) = 0 ] && echo -n '.'
43done
44fin
45
46if [ $failures -eq 0 ]; then
47 echo "All tests passed!"
48else
49 echo "FAIL: $failures failures"
50 exit $failures
51fi