diff options
author | hexcoder- <heiko@hexco.de> | 2019-09-28 13:16:12 +0200 |
---|---|---|
committer | hexcoder- <heiko@hexco.de> | 2019-09-28 13:16:12 +0200 |
commit | 1fc328b2ea489bd3ad1a262049da652e7eba0f0d (patch) | |
tree | a010dffc673be3ecec9569d4c0e8a8f45b6cfce7 /test | |
parent | 1e93146b494f9d6cf41db2f5e3da31a9a2e035bd (diff) | |
download | afl++-1fc328b2ea489bd3ad1a262049da652e7eba0f0d.tar.gz |
portability: MacOS X has clang, so we need to use afl-clang instead
of afl-gcc. Replaced afl-gcc with variable AFL_GCC, which is set accordingly.
Diffstat (limited to 'test')
-rwxr-xr-x | test/test.sh | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/test/test.sh b/test/test.sh index 00509c8e..24e75388 100755 --- a/test/test.sh +++ b/test/test.sh @@ -39,6 +39,11 @@ unset AFL_LLVM_LAF_SPLIT_SWITCHES unset AFL_LLVM_LAF_TRANSFORM_COMPARES unset AFL_LLVM_LAF_SPLIT_COMPARES +# on MacOS X we prefer afl-clang over afl-gcc, because +# afl-gcc does not work there +test `uname -s` = 'Darwin' && { +AFL_GCC=afl-clang +} GREY="\\033[1;90m" BLUE="\\033[1;94m" GREEN="\\033[0;32m" @@ -50,38 +55,38 @@ MEM_LIMIT=150 $ECHO "${RESET}${GREY}[*] starting afl++ test framework ..." -$ECHO "$BLUE[*] Testing: afl-gcc, afl-showmap and afl-fuzz" -test -e ../afl-gcc -a -e ../afl-showmap -a -e ../afl-fuzz && { - ../afl-gcc -o test-instr.plain ../test-instr.c > /dev/null 2>&1 - AFL_HARDEN=1 ../afl-gcc -o test-instr.harden ../test-instr.c > /dev/null 2>&1 +$ECHO "$BLUE[*] Testing: ${AFL_GCC}, afl-showmap and afl-fuzz" +test -e ../${AFL_GCC} -a -e ../afl-showmap -a -e ../afl-fuzz && { + ../${AFL_GCC} -o test-instr.plain ../test-instr.c > /dev/null 2>&1 + AFL_HARDEN=1 ../${AFL_GCC} -o test-instr.harden ../test-instr.c > /dev/null 2>&1 test -e test-instr.plain && { - $ECHO "$GREEN[+] afl-gcc compilation succeeded" + $ECHO "$GREEN[+] ${AFL_GCC} compilation succeeded" echo 0 | ../afl-showmap -m ${MEM_LIMIT} -o test-instr.plain.0 -r -- ./test-instr.plain > /dev/null 2>&1 ../afl-showmap -m ${MEM_LIMIT} -o test-instr.plain.1 -r -- ./test-instr.plain < /dev/null > /dev/null 2>&1 test -e test-instr.plain.0 -a -e test-instr.plain.1 && { diff -q test-instr.plain.0 test-instr.plain.1 > /dev/null 2>&1 && { - $ECHO "$RED[!] afl-gcc instrumentation should be different on different input but is not" - } || $ECHO "$GREEN[+] afl-gcc instrumentation present and working correctly" - } || $ECHO "$RED[!] afl-gcc instrumentation failed" + $ECHO "$RED[!] ${AFL_GCC} instrumentation should be different on different input but is not" + } || $ECHO "$GREEN[+] ${AFL_GCC} instrumentation present and working correctly" + } || $ECHO "$RED[!] ${AFL_GCC} instrumentation failed" rm -f test-instr.plain.0 test-instr.plain.1 - } || $ECHO "$RED[!] afl-gcc failed" + } || $ECHO "$RED[!] ${AFL_GCC} failed" test -e test-instr.harden && { grep -qa fstack-protector-all test-instr.harden > /dev/null 2>&1 && { - $ECHO "$GREEN[+] afl-gcc hardened mode succeeded and is working" - } || $ECHO "$RED[!] afl-gcc hardened mode is not hardened" + $ECHO "$GREEN[+] ${AFL_GCC} hardened mode succeeded and is working" + } || $ECHO "$RED[!] ${AFL_GCC} hardened mode is not hardened" rm -f test-instr.harden - } || $ECHO "$RED[!] afl-gcc hardened mode compilation failed" + } || $ECHO "$RED[!] ${AFL_GCC} hardened mode compilation failed" # now we want to be sure that afl-fuzz is working { mkdir -p in echo 0 > in/in - $ECHO "$GREY[*] running afl-fuzz for afl-gcc, this will take approx 10 seconds" + $ECHO "$GREY[*] running afl-fuzz for ${AFL_GCC}, this will take approx 10 seconds" { ../afl-fuzz -V10 -m ${MEM_LIMIT} -i in -o out -- ./test-instr.plain > /dev/null 2>&1 } > /dev/null 2>&1 test -n "$( ls out/queue/id:000002* 2> /dev/null )" && { - $ECHO "$GREEN[+] afl-fuzz is working correctly with afl-gcc" - } || $ECHO "$RED[!] afl-fuzz is not working correctly with afl-gcc" + $ECHO "$GREEN[+] afl-fuzz is working correctly with ${AFL_GCC}" + } || $ECHO "$RED[!] afl-fuzz is not working correctly with ${AFL_GCC}" rm -rf in out } rm -f test-instr.plain |