]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
lib/, src/: Replace redundant checks by actual error handling
authorAlejandro Colomar <alx@kernel.org>
Thu, 14 Nov 2024 18:22:16 +0000 (19:22 +0100)
committerSerge Hallyn <serge@hallyn.com>
Fri, 24 Jan 2025 13:58:13 +0000 (07:58 -0600)
setgroups(2) already performs a test to check if the number of groups is
too large.  Don't do that ourselves, and also don't do it for every
iteration.  Just let setgroups(2) do it once.

Instead of our check, let's report errors from setgroups(2).

Reviewed-by: Serge Hallyn <serge@hallyn.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
lib/addgrps.c
src/newgrp.c

index c45c5299644aaa28bb4bf68d187e84635a541c40..630bff8c6dc00b5324442d32f85e24159f969738 100644 (file)
@@ -75,17 +75,14 @@ add_groups(const char *list)
                if (LFIND(&grp->gr_gid, grouplist, ngroups) != NULL)
                        continue;
 
-               if (ngroups >= sysconf (_SC_NGROUPS_MAX)) {
-                       fputs (_("Warning: too many groups\n"), shadow_logfd);
-                       break;
-               }
-
                grouplist[ngroups] = grp->gr_gid;
                ngroups++;
        }
 
-       if (setgroups(ngroups, grouplist) == -1)
+       if (setgroups(ngroups, grouplist) == -1) {
+               fprintf(shadow_logfd, "setgroups: %s\n", strerror(errno));
                goto free_gids;
+       }
 
        free (grouplist);
        return 0;
index 4c5795931da6f618e72d9290c73cde4cb90fbdea..2b73ae01ae0886bb142f95e84ea1e9b00ada2222 100644 (file)
@@ -683,11 +683,7 @@ fail_gg:
        grouplist = XREALLOC(grouplist, ngroups + 1, GETGROUPS_T);
 
        if (LFIND(&gid, grouplist, ngroups) == NULL) {
-               if (ngroups >= sysconf (_SC_NGROUPS_MAX)) {
-                       (void) fputs (_("too many groups\n"), stderr);
-               } else {
-                       grouplist[ngroups++] = gid;
-               }
+               grouplist[ngroups++] = gid;
        }
 
        if (setgroups(ngroups, grouplist) == -1)