Lines 543-548
Link Here
|
543 |
pid_t pid; |
543 |
pid_t pid; |
544 |
#ifdef HAS_SETUSERCONTEXT |
544 |
#ifdef HAS_SETUSERCONTEXT |
545 |
struct passwd* pwd; |
545 |
struct passwd* pwd; |
|
|
546 |
extern char **environ; |
546 |
#endif |
547 |
#endif |
547 |
#ifdef USE_PAM |
548 |
#ifdef USE_PAM |
548 |
pam_handle_t *pamh = thepamh (); |
549 |
pam_handle_t *pamh = thepamh (); |
Lines 657-662
Link Here
|
657 |
* Set the user's credentials: uid, gid, groups, |
658 |
* Set the user's credentials: uid, gid, groups, |
658 |
* environment variables, resource limits, and umask. |
659 |
* environment variables, resource limits, and umask. |
659 |
*/ |
660 |
*/ |
|
|
661 |
/* destroy user environment before calling setusercontext */ |
662 |
environ = verify->userEnviron; |
660 |
pwd = getpwnam(name); |
663 |
pwd = getpwnam(name); |
661 |
if (pwd) { |
664 |
if (pwd) { |
662 |
if (setusercontext(NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0) { |
665 |
if (setusercontext(NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0) { |
Lines 664-669
Link Here
|
664 |
errno); |
667 |
errno); |
665 |
return (0); |
668 |
return (0); |
666 |
} |
669 |
} |
|
|
670 |
verify->userEnviron = environ; |
667 |
endpwent(); |
671 |
endpwent(); |
668 |
} else { |
672 |
} else { |
669 |
LogError ("getpwnam for \"%s\" failed, errno=%d\n", name, errno); |
673 |
LogError ("getpwnam for \"%s\" failed, errno=%d\n", name, errno); |