--- xc/programs/xdm/session.c.~1.2.~ 2004-04-23 12:54:42.000000000 -0700 +++ xc/programs/xdm/session.c 2005-10-13 09:04:59.000000000 -0700 @@ -558,19 +558,6 @@ #endif /* Do system-dependent login setup here */ - -#ifdef USE_PAM - /* pass in environment variables set by libpam and modules it called */ - if (pamh) { - long i; - char **pam_env = pam_getenvlist(pamh); - for(i = 0; pam_env && pam_env[i]; i++) { - verify->userEnviron = putEnv(pam_env[i], verify->userEnviron); - } - } -#endif - - #ifndef AIXV3 #ifndef HAS_SETUSERCONTEXT if (setgid(verify->gid) < 0) { @@ -592,12 +579,22 @@ #endif /* QNX4 doesn't support multi-groups, no initgroups() */ #ifdef USE_PAM if (pamh) { + long i; + char **pam_env; + pam_error = pam_setcred (pamh, PAM_ESTABLISH_CRED); if (pam_error != PAM_SUCCESS) { LogError ("pam_setcred for \"%s\" failed: %s\n", name, pam_strerror(pamh, pam_error)); return(0); } + + /* pass in environment variables set by libpam and modules it called */ + pam_env = pam_getenvlist(pamh); + for(i = 0; pam_env && pam_env[i]; i++) { + verify->userEnviron = putEnv(pam_env[i], verify->userEnviron); + } + } #endif if (setuid(verify->uid) < 0) {