Add a wrapper for setgroups() that trims off extra groups and retries
if setgroups() fails. Also add some missing addrefs for PERM_USER and PERM_FULL_USER.
This commit is contained in:
@@ -64,12 +64,12 @@ switch_user(uid_t euid, gid_t egid, int ngroups, GETGROUPS_T *groups)
|
||||
if (seteuid(ROOT_UID) != 0)
|
||||
error(1, "seteuid(ROOT_UID)");
|
||||
}
|
||||
if (ngroups != -1) {
|
||||
if (setgroups(ngroups, groups) != 0)
|
||||
error(1, "setgroups");
|
||||
}
|
||||
if (setegid(egid) != 0)
|
||||
error(1, "setegid(%d)", (int)egid);
|
||||
if (ngroups != -1) {
|
||||
if (sudo_setgroups(ngroups, groups) != 0)
|
||||
error(1, "setgroups");
|
||||
}
|
||||
if (euid != ROOT_UID) {
|
||||
if (seteuid(euid) != 0)
|
||||
error(1, "seteuid(%d)", (int)euid);
|
||||
|
Reference in New Issue
Block a user