Branch
Hash :
82942a6e
Author :
Date :
2022-07-23T12:01:35
Avoid DoS vulnerability through unsafe default assignment. See https://www.shellcheck.net/wiki/SC2223 . * MODULES.html.sh (func_tmpdir): Surround default assignment with double-quotes. * build-aux/bootstrap: Likewise. * build-aux/csharpcomp.sh.in (func_tmpdir): Likewise. * build-aux/gendocs.sh: Likewise. * build-aux/libtool-next-version (func_tmpdir): Likewise. * config/srclist-update: Likewise. * gnulib-tool (func_tmpdir): Likewise. * posix-modules (func_tmpdir): Likewise. * tests/test-atexit.sh: Likewise. * tests/test-btoc32-1.sh: Likewise. * tests/test-btoc32-2.sh: Likewise. * tests/test-btowc1.sh: Likewise. * tests/test-btowc2.sh: Likewise. * tests/test-c-dtoastr.sh: Likewise. * tests/test-c-ldtoastr.sh: Likewise. * tests/test-c-snprintf.sh: Likewise. * tests/test-c-strcase.sh: Likewise. * tests/test-c-vasprintf.sh: Likewise. * tests/test-c-vsnprintf.sh: Likewise. * tests/test-c-xvasprintf.sh: Likewise. * tests/test-c32isalnum.sh: Likewise. * tests/test-c32isalpha.sh: Likewise. * tests/test-c32isblank.sh: Likewise. * tests/test-c32iscntrl.sh: Likewise. * tests/test-c32isdigit.sh: Likewise. * tests/test-c32isgraph.sh: Likewise. * tests/test-c32islower.sh: Likewise. * tests/test-c32isprint.sh: Likewise. * tests/test-c32ispunct.sh: Likewise. * tests/test-c32isspace.sh: Likewise. * tests/test-c32isupper.sh: Likewise. * tests/test-c32isxdigit.sh: Likewise. * tests/test-c32rtomb.sh: Likewise. * tests/test-c32snrtombs-1.sh: Likewise. * tests/test-c32snrtombs-2.sh: Likewise. * tests/test-c32snrtombs-3.sh: Likewise. * tests/test-c32snrtombs-4.sh: Likewise. * tests/test-c32srtombs-1.sh: Likewise. * tests/test-c32srtombs-2.sh: Likewise. * tests/test-c32srtombs-3.sh: Likewise. * tests/test-c32srtombs-4.sh: Likewise. * tests/test-c32stombs-1.sh: Likewise. * tests/test-c32stombs-2.sh: Likewise. * tests/test-c32stombs-3.sh: Likewise. * tests/test-c32stombs-4.sh: Likewise. * tests/test-closein.sh: Likewise. * tests/test-copy-acl.sh (func_tmpdir): Likewise. * tests/test-copy-file.sh (func_tmpdir): Likewise. * tests/test-dprintf-posix.sh: Likewise. * tests/test-execl.sh: Likewise. * tests/test-execle.sh: Likewise. * tests/test-execlp.sh: Likewise. * tests/test-execv.sh: Likewise. * tests/test-execve.sh: Likewise. * tests/test-execvp.sh: Likewise. * tests/test-execvpe.sh: Likewise. * tests/test-file-has-acl.sh (func_tmpdir): Likewise. * tests/test-fprintf-posix.sh: Likewise. * tests/test-init.sh: Likewise. * tests/test-iswdigit.sh: Likewise. * tests/test-iswxdigit.sh: Likewise. * tests/test-mbmemcasecmp1.sh: Likewise. * tests/test-mbmemcasecmp2.sh: Likewise. * tests/test-mbmemcasecmp3.sh: Likewise. * tests/test-mbmemcasecoll1.sh: Likewise. * tests/test-mbmemcasecoll2.sh: Likewise. * tests/test-mbmemcasecoll3.sh: Likewise. * tests/test-mbrtoc32-1.sh: Likewise. * tests/test-mbrtoc32-2.sh: Likewise. * tests/test-mbrtoc32-3.sh: Likewise. * tests/test-mbrtoc32-4.sh: Likewise. * tests/test-mbrtowc1.sh: Likewise. * tests/test-mbrtowc2.sh: Likewise. * tests/test-mbrtowc3.sh: Likewise. * tests/test-mbrtowc4.sh: Likewise. * tests/test-mbscasecmp.sh: Likewise. * tests/test-mbscasestr2.sh: Likewise. * tests/test-mbscasestr3.sh: Likewise. * tests/test-mbscasestr4.sh: Likewise. * tests/test-mbschr.sh: Likewise. * tests/test-mbscspn.sh: Likewise. * tests/test-mbsinit.sh: Likewise. * tests/test-mbsncasecmp.sh: Likewise. * tests/test-mbsnrtoc32s-1.sh: Likewise. * tests/test-mbsnrtoc32s-2.sh: Likewise. * tests/test-mbsnrtoc32s-3.sh: Likewise. * tests/test-mbsnrtoc32s-4.sh: Likewise. * tests/test-mbsnrtowcs1.sh: Likewise. * tests/test-mbsnrtowcs2.sh: Likewise. * tests/test-mbsnrtowcs3.sh: Likewise. * tests/test-mbsnrtowcs4.sh: Likewise. * tests/test-mbspbrk.sh: Likewise. * tests/test-mbspcasecmp.sh: Likewise. * tests/test-mbsrchr.sh: Likewise. * tests/test-mbsrtoc32s-1.sh: Likewise. * tests/test-mbsrtoc32s-2.sh: Likewise. * tests/test-mbsrtoc32s-3.sh: Likewise. * tests/test-mbsrtoc32s-4.sh: Likewise. * tests/test-mbsrtowcs1.sh: Likewise. * tests/test-mbsrtowcs2.sh: Likewise. * tests/test-mbsrtowcs3.sh: Likewise. * tests/test-mbsrtowcs4.sh: Likewise. * tests/test-mbsspn.sh: Likewise. * tests/test-mbsstr2.sh: Likewise. * tests/test-mbsstr3.sh: Likewise. * tests/test-mbstoc32s-1.sh: Likewise. * tests/test-mbstoc32s-2.sh: Likewise. * tests/test-mbstoc32s-3.sh: Likewise. * tests/test-mbstoc32s-4.sh: Likewise. * tests/test-nl_langinfo.sh: Likewise. * tests/test-parse-duration.sh (func_tmpdir): Likewise. * tests/test-perror.sh: Likewise. * tests/test-printf-posix.sh: Likewise. * tests/test-set-mode-acl.sh (func_tmpdir): Likewise. * tests/test-setlocale1.sh: Likewise. * tests/test-strtod1.sh: Likewise. * tests/test-strtold1.sh: Likewise. * tests/test-unicodeio2.sh: Likewise. * tests/test-unicodeio3.sh: Likewise. * tests/test-vasnprintf-posix2.sh: Likewise. * tests/test-vc-list-files-cvs.sh: Likewise. * tests/test-vc-list-files-git.sh: Likewise. * tests/test-vdprintf-posix.sh: Likewise. * tests/test-vfprintf-posix.sh: Likewise. * tests/test-vprintf-posix.sh: Likewise. * tests/test-wcrtomb.sh: Likewise. * tests/test-wcsnrtombs1.sh: Likewise. * tests/test-wcsnrtombs2.sh: Likewise. * tests/test-wcsnrtombs3.sh: Likewise. * tests/test-wcsnrtombs4.sh: Likewise. * tests/test-wcsrtombs1.sh: Likewise. * tests/test-wcsrtombs2.sh: Likewise. * tests/test-wcsrtombs3.sh: Likewise. * tests/test-wcsrtombs4.sh: Likewise. * tests/test-xprintf-posix.sh: Likewise. * tests/test-xstrtoimax.sh: Likewise. * tests/test-xstrtol.sh: Likewise. * tests/test-xstrtoll.sh: Likewise. * tests/test-xstrtoumax.sh: Likewise. * tests/test-yesno.sh: Likewise. * tests/unicase/test-locale-language.sh: Likewise. * tests/unicase/test-ulc-casecmp1.sh: Likewise. * tests/unicase/test-ulc-casecmp2.sh: Likewise. * tests/unicase/test-ulc-casecoll1.sh: Likewise. * tests/unicase/test-ulc-casecoll2.sh: Likewise. * tests/unigbrk/test-ulc-grapheme-breaks.sh: Likewise. * tests/unistdio/test-u16-vasnprintf2.sh: Likewise. * tests/unistdio/test-u16-vasnprintf3.sh: Likewise. * tests/unistdio/test-u32-vasnprintf2.sh: Likewise. * tests/unistdio/test-u32-vasnprintf3.sh: Likewise. * tests/unistdio/test-u8-vasnprintf2.sh: Likewise. * tests/unistdio/test-u8-vasnprintf3.sh: Likewise. * tests/unistdio/test-ulc-vasnprintf2.sh: Likewise. * tests/unistdio/test-ulc-vasnprintf3.sh: Likewise. * tests/uniwbrk/test-ulc-wordbreaks.sh: Likewise. * tests/uniwidth/test-uc_width2.sh: Likewise.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
#!/bin/sh
: "${srcdir=.}"
. "$srcdir/init.sh"; path_prepend_ .
# For now, only test with C locale
LC_ALL=C
export LC_ALL
# Find out how to remove carriage returns from output. Solaris /usr/ucb/tr
# does not understand '\r'.
if echo solaris | tr -d '\r' | grep solais > /dev/null; then
cr='\015'
else
cr='\r'
fi
# Test with seekable stdin; the follow-on process must see remaining data.
tr @ '\177' <<EOF > in.tmp
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn - entire line consumed
y@n - backspace does not change result
y
does not match either yesexpr or noexpr
n
EOF
cat <<EOF > xout.tmp
N
Y
Y
N
n
EOF
fail=0
(${CHECKER} test-yesno; ${CHECKER} test-yesno 3; cat) < in.tmp > out1.tmp || fail=1
LC_ALL=C tr -d "$cr" < out1.tmp > out.tmp || fail=1
cmp xout.tmp out.tmp || fail=1
(${CHECKER} test-yesno 3; ${CHECKER} test-yesno; cat) < in.tmp > out1.tmp || fail=1
LC_ALL=C tr -d "$cr" < out1.tmp > out.tmp || fail=1
cmp xout.tmp out.tmp || fail=1
# Test for behavior on pipe
cat <<EOF > xout.tmp
Y
N
EOF
echo yes | ${CHECKER} test-yesno 2 > out1.tmp || fail=1
LC_ALL=C tr -d "$cr" < out1.tmp > out.tmp || fail=1
cmp xout.tmp out.tmp || fail=1
# Test for behavior with no EOL at EOF
cat <<EOF > xout.tmp
Y
EOF
printf y | ${CHECKER} test-yesno 1 > out1.tmp || fail=1
LC_ALL=C tr -d "$cr" < out1.tmp > out.tmp || fail=1
cmp xout.tmp out.tmp || fail=1
# Test for behavior on EOF
cat <<EOF > xout.tmp
N
EOF
${CHECKER} test-yesno </dev/null > out1.tmp || fail=1
LC_ALL=C tr -d "$cr" < out1.tmp > out.tmp || fail=1
cmp xout.tmp out.tmp || fail=1
# Test for behavior when stdin is closed
${CHECKER} test-yesno 0 <&- > out1.tmp 2> err.tmp && fail=1
LC_ALL=C tr -d "$cr" < out1.tmp > out.tmp || fail=1
cmp xout.tmp out.tmp || fail=1
test -s err.tmp || fail=1
Exit $fail