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:
parent
9c56d9c5e4
commit
52f92d8c1d
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=285414
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user