ash: fix NOEXEC mode - we were forgetting to pass environment!
env: promote to NOEXEC hd: promote to NOEXEC, as hexdump is NOEXEC already
This commit is contained in:
parent
d1660cb9ad
commit
b730474bda
@ -29,6 +29,8 @@
|
||||
* - use xfunc_error_retval
|
||||
*/
|
||||
|
||||
/* This is a NOEXEC applet. Be very careful! */
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
#if ENABLE_FEATURE_ENV_LONG_OPTIONS
|
||||
@ -119,5 +121,3 @@ int env_main(int argc UNUSED_PARAM, char **argv)
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
|
@ -137,7 +137,7 @@ USE_ECHO(APPLET_NOFORK(echo, echo, _BB_DIR_BIN, _BB_SUID_NEVER, echo))
|
||||
USE_ED(APPLET(ed, _BB_DIR_BIN, _BB_SUID_NEVER))
|
||||
USE_FEATURE_GREP_EGREP_ALIAS(APPLET_ODDNAME(egrep, grep, _BB_DIR_BIN, _BB_SUID_NEVER, egrep))
|
||||
USE_EJECT(APPLET(eject, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
||||
USE_ENV(APPLET(env, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
||||
USE_ENV(APPLET_NOEXEC(env, env, _BB_DIR_USR_BIN, _BB_SUID_NEVER, env))
|
||||
USE_ENVDIR(APPLET_ODDNAME(envdir, chpst, _BB_DIR_USR_BIN, _BB_SUID_NEVER, envdir))
|
||||
USE_ENVUIDGID(APPLET_ODDNAME(envuidgid, chpst, _BB_DIR_USR_BIN, _BB_SUID_NEVER, envuidgid))
|
||||
USE_ETHER_WAKE(APPLET_ODDNAME(ether-wake, ether_wake, _BB_DIR_USR_BIN, _BB_SUID_NEVER, ether_wake))
|
||||
@ -172,7 +172,7 @@ USE_GREP(APPLET(grep, _BB_DIR_BIN, _BB_SUID_NEVER))
|
||||
USE_GUNZIP(APPLET(gunzip, _BB_DIR_BIN, _BB_SUID_NEVER))
|
||||
USE_GZIP(APPLET(gzip, _BB_DIR_BIN, _BB_SUID_NEVER))
|
||||
USE_HALT(APPLET(halt, _BB_DIR_SBIN, _BB_SUID_NEVER))
|
||||
USE_HD(APPLET_ODDNAME(hd, hexdump, _BB_DIR_USR_BIN, _BB_SUID_NEVER, hd))
|
||||
USE_HD(APPLET_NOEXEC(hd, hexdump, _BB_DIR_USR_BIN, _BB_SUID_NEVER, hd))
|
||||
USE_HDPARM(APPLET(hdparm, _BB_DIR_SBIN, _BB_SUID_NEVER))
|
||||
USE_HEAD(APPLET(head, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
||||
USE_HEXDUMP(APPLET_NOEXEC(hexdump, hexdump, _BB_DIR_USR_BIN, _BB_SUID_NEVER, hexdump))
|
||||
|
@ -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;
|
||||
|
2
shell/ash_test/ash-standalone/noexec_gets_no_env.right
Normal file
2
shell/ash_test/ash-standalone/noexec_gets_no_env.right
Normal file
@ -0,0 +1,2 @@
|
||||
VAR7=VAL
|
||||
0
|
3
shell/ash_test/ash-standalone/noexec_gets_no_env.tests
Executable file
3
shell/ash_test/ash-standalone/noexec_gets_no_env.tests
Executable file
@ -0,0 +1,3 @@
|
||||
export VAR7=VAL
|
||||
env | grep ^VAR7=
|
||||
echo $?
|
Loading…
Reference in New Issue
Block a user