]> granicus.if.org Git - sudo/commitdiff
Use normal error path if unable to set sudoers gid.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 10 Mar 2012 21:38:14 +0000 (16:38 -0500)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 10 Mar 2012 21:38:14 +0000 (16:38 -0500)
plugins/sudoers/set_perms.c

index 32255988afaee6d0d242c091352163f9c413c034..50d0aaba928aedaac16b7367d5eaf7f5e9fcbb19 100644 (file)
@@ -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;
        /*