]> git.cameronkatri.com Git - pw-darwin.git/commitdiff
Fix regression: ensure when try to create the group and the user with the same
authorBaptiste Daroussin <bapt@FreeBSD.org>
Sat, 11 Jul 2015 23:56:55 +0000 (23:56 +0000)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Sat, 11 Jul 2015 23:56:55 +0000 (23:56 +0000)
id if possible and nothing in particular was specified

pw/pw_user.c

index f1dae7400d71fe7ac74fba0fee1818933ef7cc7e..315af39ed47e0181ce29dd4cfc3d07742e8bc819 100644 (file)
@@ -875,7 +875,7 @@ pw_gidpolicy(struct cargs * args, char *nam, gid_t prefer)
                gid = grp->gr_gid;  /* Already created? Use it anyway... */
        } else {
                struct cargs    grpargs;
-               char            tmp[32];
+               gid_t           grid = -1;
 
                LIST_INIT(&grpargs);
 
@@ -888,23 +888,15 @@ pw_gidpolicy(struct cargs * args, char *nam, gid_t prefer)
                 * user's name dups an existing group, then the group add
                 * function will happily handle that case for us and exit.
                 */
-               if (GETGRGID(prefer) == NULL) {
-                       snprintf(tmp, sizeof(tmp), "%u", prefer);
-                       addarg(&grpargs, 'g', tmp);
-               }
+               if (GETGRGID(prefer) == NULL)
+                       grid = prefer;
                if (conf.dryrun) {
                        gid = pw_groupnext(cnf, true);
                } else {
-                       pw_group(M_ADD, nam, -1, &grpargs);
+                       pw_group(M_ADD, nam, grid, &grpargs);
                        if ((grp = GETGRNAM(nam)) != NULL)
                                gid = grp->gr_gid;
                }
-               a_gid = LIST_FIRST(&grpargs);
-               while (a_gid != NULL) {
-                       struct carg    *t = LIST_NEXT(a_gid, list);
-                       LIST_REMOVE(a_gid, list);
-                       a_gid = t;
-               }
        }
        ENDGRENT();
        return gid;