From 1598d6bc559b766e1fde83d9d9e4929d2694b090 Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Wed, 21 Jan 2009 16:04:24 +1100 Subject: - (djm) [uidswap.c] bz#1412: Support >16 supplemental groups in OS X. Patch based on one from vgiffin AT apple.com; ok dtucker@ --- ChangeLog | 6 +++++- uidswap.c | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 04a70ed5f..c0204b068 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +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. @@ -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 91d878c30..837648396 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)); -- cgit v1.2.3