summaryrefslogtreecommitdiff
path: root/include/libbb.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libbb.h')
-rw-r--r--include/libbb.h18
1 files changed, 10 insertions, 8 deletions
diff --git a/include/libbb.h b/include/libbb.h
index daa3107..a0ffbef 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1726,15 +1726,16 @@ extern void selinux_or_die(void) FAST_FUNC;
/* setup_environment:
- * if chdir pw->pw_dir: ok: else if to_tmp == 1: goto /tmp else: goto / or die
- * if clear_env = 1: cd(pw->pw_dir), clear environment, then set
+ * if !SETUP_ENV_NO_CHDIR:
+ * if cd(pw->pw_dir): ok: else if SETUP_ENV_TO_TMP: cd(/tmp) else: cd(/) or die
+ * if SETUP_ENV_CLEARENV: cd(pw->pw_dir), clear environment, then set
* TERM=(old value)
* USER=pw->pw_name, LOGNAME=pw->pw_name
* PATH=bb_default_[root_]path
* HOME=pw->pw_dir
* SHELL=shell
- * else if change_env = 1:
- * if not root (if pw->pw_uid != 0):
+ * else if SETUP_ENV_CHANGEENV:
+ * if not root (if pw->pw_uid != 0) or if SETUP_ENV_CHANGEENV_LOGNAME:
* USER=pw->pw_name, LOGNAME=pw->pw_name
* HOME=pw->pw_dir
* SHELL=shell
@@ -1743,10 +1744,11 @@ extern void selinux_or_die(void) FAST_FUNC;
* NB: CHANGEENV and CLEARENV use setenv() - this leaks memory!
* If setup_environment() is used is vforked child, this leaks memory _in parent too_!
*/
-#define SETUP_ENV_CHANGEENV (1 << 0)
-#define SETUP_ENV_CLEARENV (1 << 1)
-#define SETUP_ENV_TO_TMP (1 << 2)
-#define SETUP_ENV_NO_CHDIR (1 << 4)
+#define SETUP_ENV_CHANGEENV (1 << 0)
+#define SETUP_ENV_CHANGEENV_LOGNAME (1 << 1)
+#define SETUP_ENV_CLEARENV (1 << 2)
+#define SETUP_ENV_TO_TMP (1 << 3)
+#define SETUP_ENV_NO_CHDIR (1 << 4)
void setup_environment(const char *shell, int flags, const struct passwd *pw) FAST_FUNC;
void nuke_str(char *str) FAST_FUNC;
#if ENABLE_FEATURE_SECURETTY && !ENABLE_PAM