case PERM_ROOT:
if (setresuid(ROOT_UID, ROOT_UID, ROOT_UID))
errorx(1, "setresuid(ROOT_UID, ROOT_UID, ROOT_UID) failed, your operating system may have a broken setresuid() function\nTry running configure with --disable-setresuid");
+ (void) setresgid(-1, user_gid, -1);
break;
case PERM_USER:
break;
case PERM_RUNAS:
+ (void) setresgid(-1, runas_pw->pw_gid, -1);
if (setresuid(-1, runas_pw->pw_uid, -1))
error(1, "unable to change to runas uid");
break;
errorx(1, "setreuid(-1, ROOT_UID) failed, your operating system may have a broken setreuid() function\nTry running configure with --disable-setreuid");
if (setuid(ROOT_UID))
error(1, "setuid(ROOT_UID)");
+ (void) setregid(-1, user_gid);
break;
case PERM_USER:
break;
case PERM_RUNAS:
+ (void) setregid(-1, runas_pw->pw_gid);
if (setreuid(-1, runas_pw->pw_uid))
error(1, "unable to change to runas uid");
break;
switch (perm) {
case PERM_ROOT:
- /* already set above */
+ /* uid set above */
+ (void) setegid(user_gid);
break;
case PERM_USER:
break;
case PERM_RUNAS:
+ (void) setegid(runas_pw->pw_gid);
if (seteuid(runas_pw->pw_uid))
error(1, "unable to change to runas uid");
break;