Fix regression: ensure when try to create the group and the user with the same

id if possible and nothing in particular was specified
This commit is contained in:
Baptiste Daroussin 2015-07-11 23:56:55 +00:00
parent 9c56d9c5e4
commit 52f92d8c1d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=285414

View 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;