aboutsummaryrefslogtreecommitdiff
path: root/x11/xdm/files/patch-session.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11/xdm/files/patch-session.c')
-rw-r--r--x11/xdm/files/patch-session.c27
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);