diff options
author | Denis Vlasenko | 2008-10-20 08:15:51 +0000 |
---|---|---|
committer | Denis Vlasenko | 2008-10-20 08:15:51 +0000 |
commit | b730474bda4a964930e8013301ace7b49a0c5726 (patch) | |
tree | 67a8c0ebd37a6231017e8e8dc3598b63a8c4402c /shell | |
parent | d1660cb9ad3adb4b99c098de88f79cbeb74c3a5d (diff) | |
download | busybox-b730474bda4a964930e8013301ace7b49a0c5726.zip busybox-b730474bda4a964930e8013301ace7b49a0c5726.tar.gz |
ash: fix NOEXEC mode - we were forgetting to pass environment!
env: promote to NOEXEC
hd: promote to NOEXEC, as hexdump is NOEXEC already
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash.c | 7 | ||||
-rw-r--r-- | shell/ash_test/ash-standalone/noexec_gets_no_env.right | 2 | ||||
-rwxr-xr-x | shell/ash_test/ash-standalone/noexec_gets_no_env.tests | 3 |
3 files changed, 10 insertions, 2 deletions
diff --git a/shell/ash.c b/shell/ash.c index 70b7ae3..81ac563 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -7008,8 +7008,11 @@ tryexec(USE_FEATURE_SH_STANDALONE(int applet_no,) char *cmd, char **argv, char * #if ENABLE_FEATURE_SH_STANDALONE if (applet_no >= 0) { - if (APPLET_IS_NOEXEC(applet_no)) + if (APPLET_IS_NOEXEC(applet_no)) { + while (*envp) + putenv(*envp++); run_applet_no_and_exit(applet_no, argv); + } /* re-exec ourselves with the new arguments */ execve(bb_busybox_exec_path, argv, envp); /* If they called chroot or otherwise made the binary no longer @@ -12094,7 +12097,7 @@ exportcmd(int argc UNUSED_PARAM, char **argv) char *name; const char *p; char **aptr; - int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT; + int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT; if (nextopt("p") != 'p') { aptr = argptr; diff --git a/shell/ash_test/ash-standalone/noexec_gets_no_env.right b/shell/ash_test/ash-standalone/noexec_gets_no_env.right new file mode 100644 index 0000000..3d55d73 --- /dev/null +++ b/shell/ash_test/ash-standalone/noexec_gets_no_env.right @@ -0,0 +1,2 @@ +VAR7=VAL +0 diff --git a/shell/ash_test/ash-standalone/noexec_gets_no_env.tests b/shell/ash_test/ash-standalone/noexec_gets_no_env.tests new file mode 100755 index 0000000..5e12e5a --- /dev/null +++ b/shell/ash_test/ash-standalone/noexec_gets_no_env.tests @@ -0,0 +1,3 @@ +export VAR7=VAL +env | grep ^VAR7= +echo $? |