chiark / gitweb /
4a8d2726368288795bc1ef6c214c3e514c4b19dd
[adns.git] / regress / check1fuzz
1 #!/bin/sh
2 # usage: check1fuzz <fuzzer stimulus file>
3 # fuzz check script, for checking that one fuzz input works
4
5 set -e
6 : ${srcdir=.}
7 . "$srcdir"/shlib
8
9 fuzzfile="$1"
10
11 exec <"$fuzzfile"
12
13 case "$fuzzfile" in
14 fuzz-*)         kind=f; case="${fuzzfile#fuzz-}"        ;;
15 fuzzraw-*)      kind=r; case="${fuzzfile#fuzzraw-}"     ;;
16 *)              printf >&2 '\nWRONG-FUZZ-%s\n' $fuzzfile; exit 1 ;;
17 esac
18
19 desc="$case.$kind"
20
21 read nargs
22 if [ "$nargs" = 0 ]; then printf "SKIPPED-$desc "; exit 5; fi
23
24 read arg1len
25 read program
26
27 case "$program" in
28 */*)    ;;
29 *)      program="./$program" ;;
30 esac
31
32 exec 3>output-$desc.trouble
33
34 set +e
35 ${program} <"$fuzzfile" >output-$desc.out.tmp 2>&3
36 rc=$?
37 set -e
38
39 if [ $rc = 0 ]; then
40         set +e
41         diff -u output-$desc.out.tmp case-$case.out >&3
42         rc=$?
43         set -e
44 fi
45
46 if [ $rc != 0 ]; then
47         printf >&2 '\nFAIL-%s\n' $desc
48         exit $rc
49 fi
50
51 printf '%s ' "$desc"