1- #! /bin/sh -u
1+ #! /bin/sh -ue
22
33# Usage: killed_by_signal $?
44#
@@ -18,6 +18,24 @@ TEST_DIR=$(dirname "$(readlink -f "$0")")/invalid-elf
1818TEST_CASES=" invalid-shrstrtab-idx invalid-shrstrtab-size invalid-shrstrtab-zero
1919 invalid-shrstrtab-nonterm invalid-shdr-name invalid-phdr-offset"
2020
21+ # Issue #64 regression test. Test ELF provided by issue submitter.
22+ TEST_CASES=$TEST_CASES ' invalid-phdr-issue-64'
23+
24+ # shellcheck disable=SC2034
25+ invalid_shrstrtab_idx_MSG=' data region extends past file end'
26+ # shellcheck disable=SC2034
27+ invalid_shrstrtab_size_MSG=' data region extends past file end'
28+ # shellcheck disable=SC2034
29+ invalid_shrstrtab_zero_MSG=' data region extends past file end'
30+ # shellcheck disable=SC2034
31+ invalid_shrstrtab_nonterm_MSG=' data region extends past file end'
32+ # shellcheck disable=SC2034
33+ invalid_shdr_name_MSG=' data region extends past file end'
34+ # shellcheck disable=SC2034
35+ invalid_phdr_offset_MSG=' data region extends past file end'
36+ # shellcheck disable=SC2034
37+ invalid_phdr_issue_64_MSG=' program header table out of bounds'
38+
2139FAILED_TESTS=" "
2240
2341for tcase in $TEST_CASES ; do
@@ -26,10 +44,16 @@ for tcase in $TEST_CASES; do
2644 exit 1
2745 fi
2846
29- ../src/patchelf --output /dev/null " $TEST_DIR /$tcase "
30- if killed_by_signal $? ; then
47+ ../src/patchelf --output /dev/null " $TEST_DIR /$tcase " && res= $? || res= $?
48+ if killed_by_signal " $res " ; then
3149 FAILED_TESTS=" $FAILED_TESTS $tcase "
3250 fi
51+
52+ var=$( echo " $tcase -MSG" | tr ' -' ' _' )
53+ msg=
54+ eval " msg=\$ {$var }"
55+ ../src/patchelf --output /dev/null " $TEST_DIR /$tcase " 2>&1 |
56+ grep " $msg " > /dev/null 2> /dev/null
3357done
3458
3559if [ -z " $FAILED_TESTS " ]; then
0 commit comments