|
Lines 233-238
permanently_set_uid(struct passwd *pw)
Link Here
|
| 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)); |