]> granicus.if.org Git - sudo/commitdiff
The -i flag should imply env_reset. This got broken in sudo 1.6.9.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 21 Jun 2008 18:59:36 +0000 (18:59 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 21 Jun 2008 18:59:36 +0000 (18:59 +0000)
env.c
sudo.c

diff --git a/env.c b/env.c
index 10a1061fdc7f4ef0a5ff57af63db06b1a189641e..27434e7be8ce65615f2a1c0311e942d2e6c46a6c 100644 (file)
--- 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 abf9c37acbf137249abdabd365e52abdd62517d3..a188bb53b589204b353f442325907b527fed3872 100644 (file)
--- 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 &&