If executing a file fails with an [ENOEXEC] error, the shell executes the file as a shell script, except that this execution may instead result in an error message if the file is binary. Per a recent Austin Group interpretation, we will need to change this to allow a concatenation of a shell script and a binary payload. See Austin Group bugs #1226 and #1250. MFC after: 1 week
15 lines
529 B
Plaintext
15 lines
529 B
Plaintext
# $FreeBSD$
|
|
# This tests a quality of implementation issue.
|
|
# Shells are not required to reject executing binary files as shell scripts
|
|
# but executing, for example, ELF files for a different architecture as
|
|
# shell scripts may have annoying side effects.
|
|
|
|
T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit
|
|
trap 'rm -rf "${T}"' 0
|
|
printf '\211PNG\015\012\032\012\0\0\0\015IHDR' >"$T/testshellproc"
|
|
chmod 755 "$T/testshellproc"
|
|
PATH=$T:$PATH
|
|
errout=`testshellproc 3>&2 2>&1 >&3 3>&-`
|
|
r=$?
|
|
[ "$r" = 126 ] && [ -n "$errout" ]
|