summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2009-01-21 16:04:24 +1100
committerDamien Miller <djm@mindrot.org>2009-01-21 16:04:24 +1100
commit1598d6bc559b766e1fde83d9d9e4929d2694b090 (patch)
tree7cce63a04a7ccac621e44312c5d22af26b507949
parent2676791c38e16497c3d078d86c0a7608c4d946f1 (diff)
- (djm) [uidswap.c] bz#1412: Support >16 supplemental groups in OS X.
Patch based on one from vgiffin AT apple.com; ok dtucker@
-rw-r--r--ChangeLog6
-rw-r--r--uidswap.c10
2 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 04a70ed5f..c0204b068 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,8 @@
120090107 120090107
2 - (djm) [uidswap.c] bz#1412: Support >16 supplemental groups in OS X.
3 Patch based on one from vgiffin AT apple.com; ok dtucker@
4
520090107
2 - (tim) [configure.ac defines.h openbsd-compat/port-uw.c 6 - (tim) [configure.ac defines.h openbsd-compat/port-uw.c
3 openbsd-compat/xcrypt.c] Add SECUREWARE support to OpenServer 6 SVR5 ABI. 7 openbsd-compat/xcrypt.c] Add SECUREWARE support to OpenServer 6 SVR5 ABI.
4 OK djm@ dtucker@ 8 OK djm@ dtucker@
@@ -4996,5 +5000,5 @@
4996 OpenServer 6 and add osr5bigcrypt support so when someone migrates 5000 OpenServer 6 and add osr5bigcrypt support so when someone migrates
4997 passwords between UnixWare and OpenServer they will still work. OK dtucker@ 5001 passwords between UnixWare and OpenServer they will still work. OK dtucker@
4998 5002
4999$Id: ChangeLog,v 1.5157 2009/01/08 04:50:08 tim Exp $ 5003$Id: ChangeLog,v 1.5158 2009/01/21 05:04:24 djm Exp $
5000 5004
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)
233 fatal("setgid %u: %.100s", (u_int)pw->pw_gid, strerror(errno)); 233 fatal("setgid %u: %.100s", (u_int)pw->pw_gid, strerror(errno));
234#endif 234#endif
235 235
236#ifdef __APPLE__
237 /*
238 * OS X requires initgroups after setgid to opt back into
239 * memberd support for >16 supplemental groups.
240 */
241 if (initgroups(pw->pw_name, pw->pw_gid) < 0)
242 fatal("initgroups %.100s %u: %.100s",
243 pw->pw_name, (u_int)pw->pw_gid, strerror(errno));
244#endif
245
236#if defined(HAVE_SETRESUID) && !defined(BROKEN_SETRESUID) 246#if defined(HAVE_SETRESUID) && !defined(BROKEN_SETRESUID)
237 if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) < 0) 247 if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) < 0)
238 fatal("setresuid %u: %.100s", (u_int)pw->pw_uid, strerror(errno)); 248 fatal("setresuid %u: %.100s", (u_int)pw->pw_uid, strerror(errno));