Index: Linux-PAM-1.4.0/modules/pam_xauth/pam_xauth.c =================================================================== --- Linux-PAM-1.4.0.orig/modules/pam_xauth/pam_xauth.c +++ Linux-PAM-1.4.0/modules/pam_xauth/pam_xauth.c @@ -701,8 +701,9 @@ pam_sm_open_session (pam_handle_t *pamh, pam_syslog(pamh, LOG_ERR, "can't set environment variable '%s'", xauthority); - putenv (xauthority); /* The environment owns this string now. */ - /* Don't free environment variables nor set them to NULL. */ + if (putenv (xauthority) == 0) /* The environment owns this string now. */ + xauthority = NULL; + /* Don't free environment variables. */ /* set $DISPLAY in pam handle to make su - work */ { @@ -765,7 +766,8 @@ cleanup: unsetenv (XAUTHENV); free(cookiefile); free(cookie); - free(xauthority); + if (xauthority != NULL) /* If it hasn't been successfully passed to putenv() ... */ + free(xauthority); return retval; }