diff options
author | Damien Miller <djm@mindrot.org> | 2009-01-21 16:04:24 +1100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2009-01-21 16:04:24 +1100 |
commit | 1598d6bc559b766e1fde83d9d9e4929d2694b090 (patch) | |
tree | 7cce63a04a7ccac621e44312c5d22af26b507949 | |
parent | 2676791c38e16497c3d078d86c0a7608c4d946f1 (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-- | ChangeLog | 6 | ||||
-rw-r--r-- | uidswap.c | 10 |
2 files changed, 15 insertions, 1 deletions
@@ -1,4 +1,8 @@ | |||
1 | 20090107 | 1 | 20090107 |
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 | |||
5 | 20090107 | ||
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 | ||
@@ -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)); |