summaryrefslogtreecommitdiffstats
path: root/pw/pw_user.c
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2015-07-11 23:56:55 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2015-07-11 23:56:55 +0000
commitfbab7d3255ef972d79ee2480df4dc928fd58d6e6 (patch)
tree01644b72d6329fd97944c9a61503bab39511fd8e /pw/pw_user.c
parent70d8c85c3102961dcd753036d7ede14d2c78ebb5 (diff)
downloadpw-darwin-fbab7d3255ef972d79ee2480df4dc928fd58d6e6.tar.gz
pw-darwin-fbab7d3255ef972d79ee2480df4dc928fd58d6e6.tar.zst
pw-darwin-fbab7d3255ef972d79ee2480df4dc928fd58d6e6.zip
Fix regression: ensure when try to create the group and the user with the same
id if possible and nothing in particular was specified
Diffstat (limited to 'pw/pw_user.c')
-rw-r--r--pw/pw_user.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/pw/pw_user.c b/pw/pw_user.c
index f1dae74..315af39 100644
--- a/pw/pw_user.c
+++ b/pw/pw_user.c
@@ -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;