summaryrefslogtreecommitdiff
path: root/platform.c
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@zip.com.au>2010-11-05 13:32:52 +1100
committerDarren Tucker <dtucker@zip.com.au>2010-11-05 13:32:52 +1100
commitcc12418e18242ce1f61d7035da4956274ba13a96 (patch)
tree78f4ed69e3190a3bae84cf2e64c7c37382cbe106 /platform.c
parent0b2ee6452c6c6e0c37dc10072ec4cf711e8dde89 (diff)
- (dtucker) [platform.c session.c] Move PAM credential establishment for the
non-LOGIN_CAP case into platform.c.
Diffstat (limited to 'platform.c')
-rw-r--r--platform.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/platform.c b/platform.c
index c8163f90..b4fb88e5 100644
--- a/platform.c
+++ b/platform.c
@@ -1,4 +1,4 @@
-/* $Id: platform.c,v 1.12 2010/11/05 02:29:25 dtucker Exp $ */
+/* $Id: platform.c,v 1.13 2010/11/05 02:32:53 dtucker Exp $ */
/*
* Copyright (c) 2006 Darren Tucker. All rights reserved.
@@ -102,6 +102,17 @@ platform_setusercontext(struct passwd *pw)
void
platform_setusercontext_post_groups(struct passwd *pw)
{
+#if !defined(HAVE_LOGIN_CAP) && defined(USE_PAM)
+ /*
+ * PAM credentials may take the form of supplementary groups.
+ * These will have been wiped by the above initgroups() call.
+ * Reestablish them here.
+ */
+ if (options.use_pam) {
+ do_pam_setcred(use_privsep);
+ }
+#endif /* USE_PAM */
+
#if !defined(HAVE_LOGIN_CAP) && (defined(WITH_IRIX_PROJECT) || \
defined(WITH_IRIX_JOBS) || defined(WITH_IRIX_ARRAY))
irix_setusercontext(pw);