blob: 36fcc1035e522bafb259bd3ffd7421d59404026f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
--- programs/xdm/session.c.orig Tue Feb 19 23:36:19 2002
+++ programs/xdm/session.c Tue Feb 19 23:51:21 2002
@@ -573,11 +573,13 @@
#ifdef USE_PAM
/* pass in environment variables set by libpam and modules it called */
if (pamh) {
- long i;
+ int i;
char **pam_env = pam_getenvlist(pamh);
for(i = 0; pam_env && pam_env[i]; i++) {
verify->userEnviron = putEnv(pam_env[i], verify->userEnviron);
+ free(pam_env[i]);
}
+ free(pam_env);
}
#endif
@@ -623,12 +625,19 @@
pwd = getpwnam(name);
if (pwd)
{
+ extern char **environ;
+ char **saved_environ = environ;
+
+ environ = verify->userEnviron;
if (setusercontext(NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0)
{
+ environ = saved_environ;
LogError("setusercontext for \"%s\" failed, errno=%d\n", name,
errno);
return (0);
}
+ verify->userEnviron = environ;
+ environ = saved_environ;
endpwent();
}
else
|