From: Ron Yorston Date: Thu, 1 Nov 2018 10:45:03 +0000 (+0100) Subject: ash: in tryexec(), ensure we don't try to run embedded scripts as applets X-Git-Tag: 1_30_0~417 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=ca82b5354feca83374c78a7bdd43ef3aab9204e9;p=oweals%2Fbusybox.git ash: in tryexec(), ensure we don't try to run embedded scripts as applets Signed-off-by: Ron Yorston Signed-off-by: Denys Vlasenko --- diff --git a/shell/ash.c b/shell/ash.c index 58ecf6d2c..19004aad8 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -8017,6 +8017,10 @@ tryexec(IF_FEATURE_SH_STANDALONE(int applet_no,) const char *cmd, char **argv, c { #if ENABLE_FEATURE_SH_STANDALONE if (applet_no >= 0) { +# if NUM_SCRIPTS > 0 + if (applet_no >= NUM_APPLETS) + goto run_script; +# endif if (APPLET_IS_NOEXEC(applet_no)) { clearenv(); while (*envp) @@ -8039,7 +8043,11 @@ tryexec(IF_FEATURE_SH_STANDALONE(int applet_no,) const char *cmd, char **argv, c #else execve(cmd, argv, envp); #endif + if (cmd != bb_busybox_exec_path && errno == ENOEXEC) { +#if ENABLE_FEATURE_SH_STANDALONE && NUM_SCRIPTS > 0 + run_script: +#endif /* Run "cmd" as a shell script: * http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html * "If the execve() function fails with ENOEXEC, the shell