--- modules/pam_xauth/pam_xauth.c
+++ modules/pam_xauth/pam_xauth.c	2008/11/04 10:59:23
@@ -600,6 +600,29 @@
 		  free (d);
 		}
 
+		/* set XAUTHLOCALHOSTNAME to make sure that su - work under gnome */
+		if (getenv("XAUTHLOCALHOSTNAME") != NULL) {
+			char *d, *xauthlocalhostname;
+			
+			xauthlocalhostname = strdup(getenv("XAUTHLOCALHOSTNAME"));
+			
+			if (asprintf(&d, "XAUTHLOCALHOSTNAME=%s", xauthlocalhostname) < 0)
+		    {
+				pam_syslog(pamh, LOG_DEBUG, "out of memory");
+				free(xauthlocalhostname);
+				xauthlocalhostname = NULL;
+				retval = PAM_SESSION_ERR;
+				goto cleanup;
+		    }
+
+			if (pam_putenv (pamh, d) != PAM_SUCCESS)
+				pam_syslog (pamh, LOG_DEBUG,
+							"can't set environment variable '%s'", d);
+			free (d);
+			free(xauthlocalhostname);
+			xauthlocalhostname = NULL;
+		}
+		
 		/* Merge the cookie we read before into the new file. */
 		if (debug) {
 			pam_syslog(pamh, LOG_DEBUG,