Bug 205019

Summary: pw adduser mishandles internal error if the gid corresponding to the new uid is already in use
Product: Base System Reporter: Ike Eichorn <ike>
Component: binAssignee: Baptiste Daroussin <bapt>
Status: Closed FIXED    
Severity: Affects Some People CC: bapt, brad.graham
Priority: ---    
Version: 10.2-RELEASE   
Hardware: Any   
OS: Any   

Description Ike Eichorn 2015-12-04 15:18:45 UTC
In the event that pw adduser is called without specifying uid or gid and the gid numerically equal to the next uid is already in use, pw will assign the gid 4294967295. If pw adduser is called again and the situation hold for the next uid/gid combination, pw prints 'pw: gid `4294967295' has already been allocated' and exits returning 65.

I hypothesize that internally when pw attempts to create the new gid, something returns -1 as an error instead of returning the next gid. The -1 not tested for and at some point is used to create the group 4294967295. Subsequent uses fail as the gid already exists and that error is properly handled.

Steps to reproduce (assuming the next two uid/gid pairs are free):
# pw addgroup test1
# pw adduser tester1
# pw addgroup test2
# pw adduser tester2
pw: gid `4294967295' has already been allocated
# echo $?
65

First reported on freebsd-questions by Anton Shterenlikht <mexas@bris.ac.uk>

https://lists.freebsd.org/pipermail/freebsd-questions/2015-December/269327.html

Verified in 10.2-RELEASE-p7 by Reporter.
Comment 1 Baptiste Daroussin freebsd_committer freebsd_triage 2015-12-05 15:08:09 UTC
This is already fixed in head, I'll try to see what is the issue (non merged things in 10.2)
Comment 2 brad.graham 2016-03-09 23:15:26 UTC
this also happens with gid 1121.  can not find gid 1121 in use.
Comment 3 Baptiste Daroussin freebsd_committer freebsd_triage 2020-03-24 16:29:56 UTC
fixed in all supported version of freebsd