diff options
Diffstat (limited to 'x11/xdm/files/patch-session.c')
-rw-r--r-- | x11/xdm/files/patch-session.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/x11/xdm/files/patch-session.c b/x11/xdm/files/patch-session.c new file mode 100644 index 000000000000..6eb34ed2346f --- /dev/null +++ b/x11/xdm/files/patch-session.c @@ -0,0 +1,27 @@ +--- session.c.orig Sun Jun 3 22:49:51 2007 ++++ session.c Sun Jun 3 22:56:06 2007 +@@ -543,6 +543,7 @@ + pid_t pid; + #ifdef HAS_SETUSERCONTEXT + struct passwd* pwd; ++ extern char **environ; + #endif + #ifdef USE_PAM + pam_handle_t *pamh = thepamh (); +@@ -657,6 +660,8 @@ + * Set the user's credentials: uid, gid, groups, + * environment variables, resource limits, and umask. + */ ++ /* destroy user environment before calling setusercontext */ ++ environ = verify->userEnviron; + pwd = getpwnam(name); + if (pwd) { + if (setusercontext(NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0) { +@@ -664,6 +669,7 @@ + errno); + return (0); + } ++ verify->userEnviron = environ; + endpwent(); + } else { + LogError ("getpwnam for \"%s\" failed, errno=%d\n", name, errno); |