Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Dec 2019 21:32:56 +0000 (UTC)
From:      Jilles Tjoelker <jilles@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r356208 - head/bin/sh/tests/execution
Message-ID:  <201912302132.xBULWumr085838@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Mon Dec 30 21:32:55 2019
New Revision: 356208
URL: https://svnweb.freebsd.org/changeset/base/356208

Log:
  sh: Test that executing various binary files is rejected
  
  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

Added:
  head/bin/sh/tests/execution/shellproc2.0   (contents, props changed)
  head/bin/sh/tests/execution/shellproc3.0   (contents, props changed)
  head/bin/sh/tests/execution/shellproc4.0   (contents, props changed)
  head/bin/sh/tests/execution/shellproc5.0   (contents, props changed)
Modified:
  head/bin/sh/tests/execution/Makefile

Modified: head/bin/sh/tests/execution/Makefile
==============================================================================
--- head/bin/sh/tests/execution/Makefile	Mon Dec 30 20:30:31 2019	(r356207)
+++ head/bin/sh/tests/execution/Makefile	Mon Dec 30 21:32:55 2019	(r356208)
@@ -55,6 +55,10 @@ ${PACKAGE}FILES+=		set-x2.0
 ${PACKAGE}FILES+=		set-x3.0
 ${PACKAGE}FILES+=		set-x4.0
 ${PACKAGE}FILES+=		shellproc1.0
+${PACKAGE}FILES+=		shellproc2.0
+${PACKAGE}FILES+=		shellproc3.0
+${PACKAGE}FILES+=		shellproc4.0
+${PACKAGE}FILES+=		shellproc5.0
 ${PACKAGE}FILES+=		subshell1.0 subshell1.0.stdout
 ${PACKAGE}FILES+=		subshell2.0
 ${PACKAGE}FILES+=		subshell3.0

Added: head/bin/sh/tests/execution/shellproc2.0
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/bin/sh/tests/execution/shellproc2.0	Mon Dec 30 21:32:55 2019	(r356208)
@@ -0,0 +1,18 @@
+# $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 '\0' >"$T/testshellproc"
+chmod 755 "$T/testshellproc"
+if [ ! -s "$T/testshellproc" ]; then
+	printf "printf did not write a NUL character\n" >&2
+	exit 2
+fi
+PATH=$T:$PATH
+errout=`testshellproc 3>&2 2>&1 >&3 3>&-`
+r=$?
+[ "$r" = 126 ] && [ -n "$errout" ]

Added: head/bin/sh/tests/execution/shellproc3.0
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/bin/sh/tests/execution/shellproc3.0	Mon Dec 30 21:32:55 2019	(r356208)
@@ -0,0 +1,14 @@
+# $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 '\177ELF\001!!\011\0\0\0\0\0\0\0\0' >"$T/testshellproc"
+chmod 755 "$T/testshellproc"
+PATH=$T:$PATH
+errout=`testshellproc 3>&2 2>&1 >&3 3>&-`
+r=$?
+[ "$r" = 126 ] && [ -n "$errout" ]

Added: head/bin/sh/tests/execution/shellproc4.0
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/bin/sh/tests/execution/shellproc4.0	Mon Dec 30 21:32:55 2019	(r356208)
@@ -0,0 +1,14 @@
+# $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" ]

Added: head/bin/sh/tests/execution/shellproc5.0
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/bin/sh/tests/execution/shellproc5.0	Mon Dec 30 21:32:55 2019	(r356208)
@@ -0,0 +1,14 @@
+# $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 '\177ELF\001!!\012\0\0\0\0\0\0\0\0' >"$T/testshellproc"
+chmod 755 "$T/testshellproc"
+PATH=$T:$PATH
+errout=`testshellproc 3>&2 2>&1 >&3 3>&-`
+r=$?
+[ "$r" = 126 ] && [ -n "$errout" ]



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912302132.xBULWumr085838>