]> git.pld-linux.org Git - packages/sudo.git/blob - bug-440.patch
- Unadapterized per comments from glen.
[packages/sudo.git] / bug-440.patch
1 --- 1.7.4p4/env.c       Wed Aug 18 15:27:03 2010
2 +++ 1.7/env.c   Tue Sep 14 11:41:50 2010
3 @@ -608,10 +608,16 @@
4  #ifdef ENV_DEBUG
5      memset(env.envp, 0, env.env_size * sizeof(char *));
6  #endif
7 -    if (def_env_reset || ISSET(sudo_mode, MODE_LOGIN_SHELL)) {
8 -       /* Reset HOME based on target user unless keeping old value. */
9 -       reset_home = TRUE;
10  
11 +    /* Reset HOME based on target user if configured to. */
12 +    if (ISSET(sudo_mode, MODE_RUN)) {
13 +       if (def_always_set_home ||
14 +           ISSET(sudo_mode, MODE_RESET_HOME | MODE_LOGIN_SHELL) || 
15 +           (ISSET(sudo_mode, MODE_SHELL) && def_set_home))
16 +           reset_home = TRUE;
17 +    }
18 +
19 +    if (def_env_reset || ISSET(sudo_mode, MODE_LOGIN_SHELL)) {
20         /* Pull in vars we want to keep from the old environment. */
21         for (ep = old_envp; *ep; ep++) {
22             int keepit;
23 @@ -696,6 +702,11 @@
24             if (!ISSET(didvar, DID_USERNAME))
25                 sudo_setenv("USERNAME", user_name, FALSE);
26         }
27 +
28 +       /* If we didn't keep HOME, reset it based on target user. */
29 +       if (!ISSET(didvar, KEPT_HOME))
30 +           reset_home = TRUE;
31 +
32         /*
33          * Set MAIL to target user in -i mode or if MAIL is not preserved
34          * from user's environment.
35 @@ -709,13 +720,6 @@
36             sudo_putenv(cp, ISSET(didvar, DID_MAIL), TRUE);
37         }
38      } else {
39 -       /* Reset HOME based on target user if configured to. */
40 -       if (ISSET(sudo_mode, MODE_RUN)) {
41 -           if (def_always_set_home || ISSET(sudo_mode, MODE_RESET_HOME) || 
42 -               (ISSET(sudo_mode, MODE_SHELL) && def_set_home))
43 -               reset_home = TRUE;
44 -       }
45 -
46         /*
47          * Copy environ entries as long as they don't match env_delete or
48          * env_check.
49 @@ -765,7 +769,7 @@
50      }
51  
52      /* Set $HOME to target user if not preserving user's value. */
53 -    if (reset_home && !ISSET(didvar, KEPT_HOME))
54 +    if (reset_home)
55         sudo_setenv("HOME", runas_pw->pw_dir, TRUE);
56  
57      /* Provide default values for $TERM and $PATH if they are not set. */
This page took 0.148904 seconds and 3 git commands to generate.