From: Todd C. Miller Date: Sat, 21 Jun 2008 18:59:36 +0000 (+0000) Subject: The -i flag should imply env_reset. This got broken in sudo 1.6.9. X-Git-Tag: SUDO_1_7_0~102 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4578548c45d8565962e943c0ae168a1319afcfea;p=sudo The -i flag should imply env_reset. This got broken in sudo 1.6.9. --- diff --git a/env.c b/env.c index 10a1061fd..27434e7be 100644 --- a/env.c +++ b/env.c @@ -471,7 +471,7 @@ rebuild_env(sudo_mode, noexec) env.env_size = 128; old_envp = env.envp; env.envp = emalloc2(env.env_size, sizeof(char *)); - if (def_env_reset) { + if (def_env_reset || ISSET(sudo_mode, MODE_LOGIN_SHELL)) { /* Pull in vars we want to keep from the old environment. */ for (ep = environ; *ep; ep++) { int keepit; @@ -595,6 +595,7 @@ rebuild_env(sudo_mode, noexec) } /* Set $USER, $LOGNAME and $USERNAME to target if "set_logname" is true. */ + /* XXX - not needed for MODE_LOGIN_SHELL */ if (def_set_logname && runas_pw->pw_name) { if (!ISSET(didvar, KEPT_LOGNAME)) _sudo_setenv("LOGNAME", runas_pw->pw_name, TRUE); @@ -605,6 +606,7 @@ rebuild_env(sudo_mode, noexec) } /* Set $HOME for `sudo -H'. Only valid at PERM_FULL_RUNAS. */ + /* XXX - not needed for MODE_LOGIN_SHELL */ if (runas_pw->pw_dir) { if (ISSET(sudo_mode, MODE_RESET_HOME) || (ISSET(sudo_mode, MODE_RUN) && (def_always_set_home || diff --git a/sudo.c b/sudo.c index abf9c37ac..a188bb53b 100644 --- a/sudo.c +++ b/sudo.c @@ -972,6 +972,10 @@ parse_args(argc, argv) warningx("you may not specify both the `-i' and `-s' options"); usage(1); } + if (ISSET(flags, MODE_PRESERVE_ENV)) { + warningx("you may not specify both the `-i' and `-E' options"); + usage(1); + } SET(flags, MODE_SHELL); } if (mode == MODE_EDIT &&