Bug 205019 - pw adduser mishandles internal error if the gid corresponding to the new uid is already in use
Summary: pw adduser mishandles internal error if the gid corresponding to the new uid ...
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: bin (show other bugs)
Version: 10.2-RELEASE
Hardware: Any Any
: --- Affects Some People
Assignee: Baptiste Daroussin
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-12-04 15:18 UTC by Ike Eichorn
Modified: 2020-03-24 16:29 UTC (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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