diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/run_shell.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/libbb/run_shell.c b/libbb/run_shell.c index 25d55dd63..b2b4216f4 100644 --- a/libbb/run_shell.c +++ b/libbb/run_shell.c @@ -39,15 +39,13 @@ static security_context_t current_sid; void renew_current_security_context(void) { - if (current_sid) - freecon(current_sid); /* Release old context */ + freecon(current_sid); /* Release old context */ getcon(¤t_sid); /* update */ } void set_current_security_context(security_context_t sid) { - if (current_sid) - freecon(current_sid); /* Release old context */ + freecon(current_sid); /* Release old context */ current_sid = sid; } @@ -84,10 +82,10 @@ void run_shell(const char *shell, int loginshell, const char *command, const cha } args[argno] = NULL; #if ENABLE_SELINUX - if (current_sid && !setexeccon(current_sid)) { + if (current_sid) + setexeccon(current_sid); + if (ENABLE_FEATURE_CLEAN_UP) freecon(current_sid); - execve(shell, (char **) args, environ); - } else #endif execv(shell, (char **) args); bb_perror_msg_and_die("cannot run %s", shell); |