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
5 memset(env.envp, 0, env.env_size * sizeof(char *));
7 - if (def_env_reset || ISSET(sudo_mode, MODE_LOGIN_SHELL)) {
8 - /* Reset HOME based on target user unless keeping old value. */
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))
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++) {
24 if (!ISSET(didvar, DID_USERNAME))
25 sudo_setenv("USERNAME", user_name, FALSE);
28 + /* If we didn't keep HOME, reset it based on target user. */
29 + if (!ISSET(didvar, KEPT_HOME))
33 * Set MAIL to target user in -i mode or if MAIL is not preserved
34 * from user's environment.
36 sudo_putenv(cp, ISSET(didvar, DID_MAIL), TRUE);
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))
47 * Copy environ entries as long as they don't match env_delete or
52 /* Set $HOME to target user if not preserving user's value. */
53 - if (reset_home && !ISSET(didvar, KEPT_HOME))
55 sudo_setenv("HOME", runas_pw->pw_dir, TRUE);
57 /* Provide default values for $TERM and $PATH if they are not set. */