Relevant BUGIDs: Novell #66885

Purpose of commit: bugfix

Commit summary:
---------------

DISPLAY variable was not preserved, which means that pam_xauth only
works if the calling application takes care of it.
This commit is contained in:
Thorsten Kukuk 2005-03-14 09:42:27 +00:00
parent 4e5a337d39
commit 2324e72d69
2 changed files with 26 additions and 5 deletions

View File

@ -83,6 +83,7 @@ BerliOS Bugs are marked with (BerliOS #XXXX).
* pam_shells: correct README
* libpam: Fix debug code (kukuk)
* pam_limits: Fix order of LIMITS_DEF_* priorities (kukuk)
* pam_xauth: preserve DISPLAY variable (Novell #66885 - kukuk)
0.78: Do Nov 18 14:48:36 CET 2004

View File

@ -542,13 +542,33 @@ pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv)
}
/* Unset any old XAUTHORITY variable in the environment. */
if (getenv(XAUTHENV)) {
unsetenv(XAUTHENV);
}
if (getenv (XAUTHENV))
unsetenv (XAUTHENV);
/* Set the new variable in the environment. */
pam_putenv(pamh, xauthority);
putenv(xauthority); /* The environment owns this string now. */
if (pam_putenv (pamh, xauthority) != PAM_SUCCESS)
syslog (LOG_DEBUG, "pam_xauth: can't set environment variable '%s'",
xauthority);
putenv (xauthority); /* The environment owns this string now. */
/* set $DISPLAY in pam handle to make su - work */
{
char *d = (char *) malloc (strlen ("DISPLAY=") +
strlen (display) + 1);
if (d == NULL)
{
syslog (LOG_DEBUG, "pam_xauth: memory exhausted\n");
return PAM_SESSION_ERR;
}
strcpy (d, "DISPLAY=");
strcat (d, display);
if (pam_putenv (pamh, d) != PAM_SUCCESS)
syslog (LOG_DEBUG,
"pam_xauth: can't set environment variable '%s'",
d);
free (d);
}
/* Merge the cookie we read before into the new file. */
if (debug) {