summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--uidswap.c10
2 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 04a70ed5..c0204b06 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,8 @@
20090107
+ - (djm) [uidswap.c] bz#1412: Support >16 supplemental groups in OS X.
+ Patch based on one from vgiffin AT apple.com; ok dtucker@
+
+20090107
- (tim) [configure.ac defines.h openbsd-compat/port-uw.c
openbsd-compat/xcrypt.c] Add SECUREWARE support to OpenServer 6 SVR5 ABI.
OK djm@ dtucker@
@@ -4996,5 +5000,5 @@
OpenServer 6 and add osr5bigcrypt support so when someone migrates
passwords between UnixWare and OpenServer they will still work. OK dtucker@
-$Id: ChangeLog,v 1.5157 2009/01/08 04:50:08 tim Exp $
+$Id: ChangeLog,v 1.5158 2009/01/21 05:04:24 djm Exp $
diff --git a/uidswap.c b/uidswap.c
index 91d878c3..83764839 100644
--- a/uidswap.c
+++ b/uidswap.c
@@ -233,6 +233,16 @@ permanently_set_uid(struct passwd *pw)
fatal("setgid %u: %.100s", (u_int)pw->pw_gid, strerror(errno));
#endif
+#ifdef __APPLE__
+ /*
+ * OS X requires initgroups after setgid to opt back into
+ * memberd support for >16 supplemental groups.
+ */
+ if (initgroups(pw->pw_name, pw->pw_gid) < 0)
+ fatal("initgroups %.100s %u: %.100s",
+ pw->pw_name, (u_int)pw->pw_gid, strerror(errno));
+#endif
+
#if defined(HAVE_SETRESUID) && !defined(BROKEN_SETRESUID)
if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) < 0)
fatal("setresuid %u: %.100s", (u_int)pw->pw_uid, strerror(errno));