mirror of https://github.com/mirror/busybox.git
ash: in tryexec(), ensure we don't try to run embedded scripts as applets
Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>1_30_stable
parent
151de441e7
commit
ca82b5354f
|
@ -8017,6 +8017,10 @@ tryexec(IF_FEATURE_SH_STANDALONE(int applet_no,) const char *cmd, char **argv, c
|
||||||
{
|
{
|
||||||
#if ENABLE_FEATURE_SH_STANDALONE
|
#if ENABLE_FEATURE_SH_STANDALONE
|
||||||
if (applet_no >= 0) {
|
if (applet_no >= 0) {
|
||||||
|
# if NUM_SCRIPTS > 0
|
||||||
|
if (applet_no >= NUM_APPLETS)
|
||||||
|
goto run_script;
|
||||||
|
# endif
|
||||||
if (APPLET_IS_NOEXEC(applet_no)) {
|
if (APPLET_IS_NOEXEC(applet_no)) {
|
||||||
clearenv();
|
clearenv();
|
||||||
while (*envp)
|
while (*envp)
|
||||||
|
@ -8039,7 +8043,11 @@ tryexec(IF_FEATURE_SH_STANDALONE(int applet_no,) const char *cmd, char **argv, c
|
||||||
#else
|
#else
|
||||||
execve(cmd, argv, envp);
|
execve(cmd, argv, envp);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (cmd != bb_busybox_exec_path && errno == ENOEXEC) {
|
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:
|
/* Run "cmd" as a shell script:
|
||||||
* http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
|
* http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
|
||||||
* "If the execve() function fails with ENOEXEC, the shell
|
* "If the execve() function fails with ENOEXEC, the shell
|
||||||
|
|
Loading…
Reference in New Issue