]> granicus.if.org Git - sudo/commitdiff
Take MODE_LOGIN_SHELL into account when initially setting reset_home
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 14 Sep 2010 15:44:39 +0000 (11:44 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 14 Sep 2010 15:44:39 +0000 (11:44 -0400)
instead of special-casing it later.

--HG--
branch : 1.7

env.c

diff --git a/env.c b/env.c
index 37762fe9e7619f0746d6ff01a50a48b3120f42c6..2be75d8ee60dc65e1d174e887de6043c63bd8552 100644 (file)
--- a/env.c
+++ b/env.c
@@ -611,7 +611,8 @@ rebuild_env(noexec)
 
     /* Reset HOME based on target user if configured to. */
     if (ISSET(sudo_mode, MODE_RUN)) {
-       if (def_always_set_home || ISSET(sudo_mode, MODE_RESET_HOME) || 
+       if (def_always_set_home ||
+           ISSET(sudo_mode, MODE_RESET_HOME | MODE_LOGIN_SHELL) || 
            (ISSET(sudo_mode, MODE_SHELL) && def_set_home))
            reset_home = TRUE;
     }
@@ -702,8 +703,8 @@ rebuild_env(noexec)
                sudo_setenv("USERNAME", user_name, FALSE);
        }
 
-       /* If not a login shell and it wasn't kept above, reset HOME. */
-       if (ISSET(sudo_mode, MODE_LOGIN_SHELL) || !ISSET(didvar, KEPT_HOME))
+       /* If we didn't keep HOME, reset it based on target user. */
+       if (!ISSET(didvar, KEPT_HOME))
            reset_home = TRUE;
 
        /*