]> granicus.if.org Git - sudo/commitdiff
Ignore set_logname (which is now the default) for sudoedit since
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 10 Oct 2011 17:10:24 +0000 (13:10 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 10 Oct 2011 17:10:24 +0000 (13:10 -0400)
we want the LOGNAME, USER and USERNAME environment variables to
refer to the calling user since that is who the editor runs as.
This allows the editor to find the user's startup files.
Fixes bugzilla #515

plugins/sudoers/env.c

index 6d6571899e924058a97bd91310e9db8dec35a8c5..d7c15829044847a5f60a32efd0c597970ed06d83 100644 (file)
@@ -586,8 +586,13 @@ rebuild_env(void)
        SET(didvar, DID_PATH);
     }
 
-    /* Set $USER, $LOGNAME and $USERNAME to target if "set_logname" is true. */
-    if (def_set_logname && !ISSET(sudo_mode, MODE_LOGIN_SHELL)) {
+    /*
+     * Set $USER, $LOGNAME and $USERNAME to target if "set_logname" is not
+     * disabled.  We skip this if we are running a login shell (because
+     * they have already been set them) or sudoedit (because we want the
+     * editor to find the user's startup files).
+     */
+    if (def_set_logname && !ISSET(sudo_mode, MODE_LOGIN_SHELL|MODE_EDIT)) {
        if (!ISSET(didvar, KEPT_LOGNAME))
            sudo_setenv("LOGNAME", runas_pw->pw_name, TRUE);
        if (!ISSET(didvar, KEPT_USER))