#! /bin/sh -u # Usage: killed_by_signal $? # # Returns true if the exit code indicates that the program was killed # by a signal. This works because the exit code of processes that were # killed by a signal is 128 plus the signal number. killed_by_signal() { [ "$1" -ge 128 ] } # The directory containing all our input files. TEST_DIR=$(dirname "$(readlink -f "$0")")/invalid-elf # Each test case is listed here. The names should roughly indicate # what makes the given ELF file invalid. TEST_CASES="invalid-shrstrtab-idx invalid-shrstrtab-size invalid-shrstrtab-zero invalid-shrstrtab-nonterm invalid-shdr-name invalid-phdr-offset" FAILED_TESTS="" for tcase in $TEST_CASES; do if [ ! -r "$TEST_DIR/$tcase" ]; then echo "Cannot read test case: $tcase" exit 1 fi ../src/patchelf --output /dev/null "$TEST_DIR/$tcase" if killed_by_signal $?; then FAILED_TESTS="$FAILED_TESTS $tcase" fi done if [ -z "$FAILED_TESTS" ]; then exit 0 else echo "Failed tests: $FAILED_TESTS" exit 1 fi