• Kees Cook's avatar
    selftests/exec: Perform script checks with /bin/bash · 17107429
    Kees Cook authored
    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: default avatarMuhammad Usama Anjum <usama.anjum@collabora.com>
    Closes: https://lore.kernel.org/lkml/02c8bf8e-1934-44ab-a886-e065b37366a7@collabora.com/Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    ---
    Cc: Eric Biederman <ebiederm@xmission.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: linux-mm@kvack.org
    Cc: linux-kselftest@vger.kernel.org
    17107429
execveat.c 14 KB