From: Todd C. Miller Date: Sat, 10 Mar 2012 21:38:14 +0000 (-0500) Subject: Use normal error path if unable to set sudoers gid. X-Git-Tag: SUDO_1_8_5~1^2~161 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1e8f5d4aa46773c7aff367733cc689487057cb0d;p=sudo Use normal error path if unable to set sudoers gid. --- diff --git a/plugins/sudoers/set_perms.c b/plugins/sudoers/set_perms.c index 32255988a..50d0aaba9 100644 --- a/plugins/sudoers/set_perms.c +++ b/plugins/sudoers/set_perms.c @@ -298,8 +298,10 @@ set_perms(int perm) "[%d, %d, %d] -> [%d, %d, %d]", __func__, (int)ostate->rgid, (int)ostate->egid, (int)ostate->sgid, (int)state->rgid, (int)state->egid, (int)state->sgid); - if (GID_CHANGED && setresgid(ID(rgid), ID(egid), ID(sgid))) - error(1, _("unable to change to sudoers gid")); + if (GID_CHANGED && setresgid(ID(rgid), ID(egid), ID(sgid))) { + strlcpy(errbuf, _("unable to change to sudoers gid"), sizeof(errbuf)); + goto bad; + } state->ruid = ROOT_UID; /* @@ -609,8 +611,10 @@ set_perms(int perm) "[%d, %d, %d] -> [%d, %d, %d]", __func__, (int)ostate->rgid, (int)ostate->egid, (int)ostate->sgid, (int)state->rgid, (int)state->egid, (int)state->sgid); - if (GID_CHANGED && setgidx(ID_EFFECTIVE, sudoers_gid)) - error(1, _("unable to change to sudoers gid")); + if (GID_CHANGED && setgidx(ID_EFFECTIVE, sudoers_gid)) { + strlcpy(errbuf, _("unable to change to sudoers gid"), sizeof(errbuf)); + goto bad; + } state->ruid = ROOT_UID; /* @@ -955,8 +959,10 @@ set_perms(int perm) sudo_debug_printf(SUDO_DEBUG_INFO, "%s: PERM_SUDOERS: gid: " "[%d, %d] -> [%d, %d]", __func__, (int)ostate->rgid, (int)ostate->egid, (int)state->rgid, (int)state->egid); - if (GID_CHANGED && setregid(ID(rgid), ID(egid))) - error(1, _("unable to change to sudoers gid")); + if (GID_CHANGED && setregid(ID(rgid), ID(egid))) { + strlcpy(errbuf, _("unable to change to sudoers gid"), sizeof(errbuf)); + goto bad; + } state->ruid = ROOT_UID; /* @@ -1242,8 +1248,10 @@ set_perms(int perm) sudo_debug_printf(SUDO_DEBUG_INFO, "%s: PERM_SUDOERS: gid: " "[%d, %d] -> [%d, %d]", __func__, (int)ostate->rgid, (int)ostate->egid, (int)state->rgid, (int)state->egid); - if (GID_CHANGED && setegid(sudoers_gid)) - error(1, _("unable to change to sudoers gid")); + if (GID_CHANGED && setegid(sudoers_gid)) { + strlcpy(errbuf, _("unable to change to sudoers gid"), sizeof(errbuf)); + goto bad; + } state->ruid = ROOT_UID; /*