Skip to content

Commit

Permalink
selftests/exec: Perform script checks with /bin/bash
Browse files Browse the repository at this point in the history
It seems some shells linked to /bin/sh don't have consistent behavior
with error codes on execution failures. Explicitly use /bin/bash so that
"not found" errors are correctly generated. Repeating the comment from
the test:

/*
 * Execute as a long pathname relative to "/".  If this is a script,
 * the interpreter will launch but fail to open the script because its
 * name ("/dev/fd/5/xxx....") is bigger than PATH_MAX.
 *
 * The failure code is usually 127 (POSIX: "If a command is not found,
 * the exit status shall be 127."), but some systems give 126 (POSIX:
 * "If the command name is found, but it is not an executable utility,
 * the exit status shall be 126."), so allow either.
 */

Reported-by: Muhammad Usama Anjum <[email protected]>
Closes: https://lore.kernel.org/lkml/[email protected]/
Signed-off-by: Kees Cook <[email protected]>
---
Cc: Eric Biederman <[email protected]>
Cc: Shuah Khan <[email protected]>
Cc: Mark Brown <[email protected]>
Cc: [email protected]
Cc: [email protected]
  • Loading branch information
kees committed Mar 6, 2024
1 parent d3f0d7b commit 1710742
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion tools/testing/selftests/exec/execveat.c
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ static int run_tests(void)
static void prerequisites(void)
{
int fd;
const char *script = "#!/bin/sh\nexit $*\n";
const char *script = "#!/bin/bash\nexit $*\n";

/* Create ephemeral copies of files */
exe_cp("execveat", "execveat.ephemeral");
Expand Down

0 comments on commit 1710742

Please sign in to comment.