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 /uidswap.c | |
parent | 2676791c38e16497c3d078d86c0a7608c4d946f1 (diff) | |
download | openssh-git-1598d6bc559b766e1fde83d9d9e4929d2694b090.tar.gz |
- (djm) [uidswap.c] bz#1412: Support >16 supplemental groups in OS X.
Patch based on one from vgiffin AT apple.com; ok dtucker@
Diffstat (limited to 'uidswap.c')
-rw-r--r-- | uidswap.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -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)); |