HomeFreeBSD

sh: Allow more scripts without #!

Description

sh: Allow more scripts without #!

Austin Group bugs #1226 and #1250 changed the requirements for shell scripts
without #! (POSIX does not specify #!; this is about the shell execution
when execve(2) returns an [ENOEXEC] error).

POSIX says we shall allow execution if the initial part intended to be
parsed by the shell consists of characters and does not contain the NUL
character. This allows concatenating a shell script (ending with exec or
exit) and a binary payload.

In order to reject common binary files such as PNG images, check that there
is a lowercase letter or expansion before the last newline before the NUL
character, in addition to the check for the newline character suggested by
POSIX.

Details

Provenance
jillesAuthored on May 30 2020, 4:00 PM
Parents
R10:51cefda17055: genet: workaround for problem with ICMPv6 echo replies
Branches
Unknown
Tags
Unknown