eris

Very small inetd http server
git clone https://git.woozle.org/neale/eris.git

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