]> git.cameronkatri.com Git - pw-darwin.git/commitdiff
Merge from HEAD
authorBaptiste Daroussin <bapt@FreeBSD.org>
Sun, 8 Feb 2015 15:41:27 +0000 (15:41 +0000)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Sun, 8 Feb 2015 15:41:27 +0000 (15:41 +0000)
libutil/gr_util.c

index 465efd982423b8f66cde4a85ca9ebabceebc5599..b0b0b36f0818573a2b9ddc4e7765da8081ba75ba 100644 (file)
@@ -351,8 +351,6 @@ gr_fini(void)
 int
 gr_equal(const struct group *gr1, const struct group *gr2)
 {
-       int gr1_ndx;
-       int gr2_ndx;
 
        /* Check that the non-member information is the same. */
        if (gr1->gr_name == NULL || gr2->gr_name == NULL) {
@@ -368,7 +366,8 @@ gr_equal(const struct group *gr1, const struct group *gr2)
        if (gr1->gr_gid != gr2->gr_gid)
                return (false);
 
-       /* Check all members in both groups.
+       /*
+        * Check all members in both groups.
         * getgrnam can return gr_mem with a pointer to NULL.
         * gr_dup and gr_add strip out this superfluous NULL, setting
         * gr_mem to NULL for no members.
@@ -376,22 +375,18 @@ gr_equal(const struct group *gr1, const struct group *gr2)
        if (gr1->gr_mem != NULL && gr2->gr_mem != NULL) {
                int i;
 
-               for (i = 0; gr1->gr_mem[i] != NULL; i++) {
+               for (i = 0;
+                   gr1->gr_mem[i] != NULL && gr2->gr_mem[i] != NULL; i++) {
                        if (strcmp(gr1->gr_mem[i], gr2->gr_mem[i]) != 0)
                                return (false);
                }
-       }
-       /* Count number of members in both structs */
-       gr2_ndx = 0;
-       if (gr2->gr_mem != NULL)
-               for(; gr2->gr_mem[gr2_ndx] != NULL; gr2_ndx++)
-                       /* empty */;
-       gr1_ndx = 0;
-       if (gr1->gr_mem != NULL)
-               for(; gr1->gr_mem[gr1_ndx] != NULL; gr1_ndx++)
-                       /* empty */;
-       if (gr1_ndx != gr2_ndx)
+               if (gr1->gr_mem[i] != NULL || gr2->gr_mem[i] != NULL)
+                       return (false);
+       } else if (gr1->gr_mem != NULL && gr1->gr_mem[0] != NULL) {
                return (false);
+       } else if (gr2->gr_mem != NULL && gr2->gr_mem[0] != NULL) {
+               return (false);
+       }
 
        return (true);
 }