Commit Graph

56 Commits

Author SHA1 Message Date
bapt
abb886fc3d Restore dryrun support for pw groupmod 2015-12-28 23:57:22 +00:00
ngie
02a1e0f621 Initialize quiet to false so pw groupnext again prints out the next gid
by default

Reported by: Florian Degner <f.degner@gmx.de>
MFC after: 1 week
PR: 203876
Sponsored by: EMC / Isilon Storage Division
2015-10-19 18:29:32 +00:00
ed
08ce46330f Avoid calling strlen() where we can use the strspn() return value. 2015-08-03 22:07:50 +00:00
bapt
2c026ebb5c Split some extra long lines 2015-08-02 13:33:17 +00:00
bapt
4469579834 Cleanup a bit includes 2015-08-02 13:22:46 +00:00
bapt
4453f16adb Fix regression: report if a group already exists when creating it 2015-08-02 12:56:25 +00:00
bapt
4f6bdcfb5d Rewrite parsing subcommands arguments of pw(8)
Now each subcommands checks its arguments in a dedicated functions.

This helps improving input validation, code readability/maintainability
While here:
- Add a -y option to pw userdel/usermod so it can maintain NIS servers if
  nispasswd is not defined in pw.conf(5)
- Allow pw -r <rootdir> to remove directory with userdel -r
- Fix bug when renaming a user which was not renaming the user name it groups
  it is a member of.
- Only parse pw.conf(5) when needed.
2015-08-02 12:47:50 +00:00
bapt
5acf1473e1 Cast uid/git to uintmax_t when using printf-like functions so the size of
uid/gid size remains a implementation detail
2015-08-01 09:55:47 +00:00
bapt
13da2b2c87 Remove now unused variable 2015-07-11 23:17:13 +00:00
bapt
a2b16f4acb Rework groupmod modification:
Use gr_add(3) when possible to avoid code duplication.
Use a simpler logic to delete members of a group
2015-07-11 22:35:07 +00:00
bapt
4c8679fa34 Make a separate groupdel/userdel from the main function 2015-07-11 19:07:47 +00:00
bapt
0ee1498c18 Make separate functions to show users and groups 2015-07-11 18:09:27 +00:00
bapt
4567491257 Move the quiet flag into the configuration structure 2015-07-11 17:01:08 +00:00
bapt
032c1600ec Separate usernext/groupnext from the main functions 2015-07-11 16:58:47 +00:00
bapt
f97075fb60 Do not try to set password on group if the group is added as a consequence of
of creating a user (regression from r285136)

Reported by:	Fabian Keil <fk@fabiankeil.de>
2015-07-09 14:14:44 +00:00
bapt
f3cda7681e Also validate inputs of pw groupmod -h and groupmod -H 2015-07-04 15:54:11 +00:00
bapt
ec480fe320 backout remove of -q option for pw [user|group] next
While the return code is broken, some corner case usage depends on the
functionnality, so backout until we get better regression tests covering those
corner case usage.
2015-06-08 05:27:34 +00:00
bapt
6e327f9366 Fix typo 2015-06-08 05:06:17 +00:00
bapt
65b30fab70 Remove '-q' support for pw [user|group] next
the intent of -q in this command is to return as exit status the value of the
next group/user id, which does not make sense given exit status are limited to
values between 0 and 255.
2015-06-07 21:57:20 +00:00
bapt
302d4b4363 Fix duplicate checking 2015-06-07 19:59:01 +00:00
bapt
4a60f5b2aa In case of rename validate the length of the new name
Check early that the new name fits MAXLOGNAME and store it in pwconf
2015-06-07 19:33:25 +00:00
bapt
3be2bba5d7 Refactor input validation
Mutualize code to validate inputs of both 'user' and 'group' command
Test that the input name fits into MAXLOGNAME
2015-06-07 19:03:41 +00:00
bapt
4ca3925ed2 Handle pretty print (-P) via global pwconf 2015-06-07 15:27:17 +00:00
bapt
720254061f Handle dryrun (-N) via global pwconf 2015-06-07 15:09:53 +00:00
bapt
c6afeed630 Add a new global struct pwconf to store etcpath, rootdir and struct userconf
Do not add anymore -R and -V to arglist
Add an error message if both -V and -R are set in arguments
2015-06-07 14:34:38 +00:00
bapt
3b86c3ab1d Instead of always casting the pw_checkname input to u_char * and casting it back
to char *, change pw_checkname to directly take char * in input
2015-06-07 10:57:02 +00:00
bapt
cde50605c3 Cast to gid_t for groups not uid_t 2015-05-31 22:12:31 +00:00
bapt
dc90f50e54 Remove useless cast in printf and printf-like functions:
use %u for uid_t and gid_t
2015-05-31 22:07:03 +00:00
bapt
85ff7a5346 Cast -1 to uid_t and bump WARNING level to 3 2015-05-31 21:44:09 +00:00
bapt
e2af9b7893 Make pw_user()/pw_group() more consitent about errors
Some of errors were returned to the main function, some others caused a direct
exit via err(3).

The main function is only interested in EXIT_SUCCESS, so in all other cases
replace warn(3) + return err by err(3)
2015-05-31 11:23:19 +00:00
bapt
798d728a63 Revert r277652
uid and gid are never and should never be negative. The pw(8) manpage clearly
states the -u and -g arguments are for uids/gids, hence using negative values is
abusing a bug in former versions of pw(8)
2015-01-26 16:50:42 +00:00
bapt
d39bfa5fd5 Allow negative numbers in -u and -g options
PR:		196514
MFC after:	1 week
2015-01-24 19:13:03 +00:00
bapt
a06e911fb2 Do not delete the group wheel when bad argument is passed to pw groupdel -g
Check that the -g argument is actually a number, if not report an error.
This argument is converted without checking with atoi(3) later so without this
check it converts any alpha entries into 0 meaning it deletes the group wheel

Add a regression test about it

PR:		90114
Reported by:	bkoenig@cs.tu-berlin.de
MFC after:	1 week
2014-10-28 14:54:04 +00:00
bapt
2e5eee16fd When a group is renamed then the group has been invalidated for sure.
In that case get the group information using the new name.

Add a regression test about this bug

PR:		193704
Reported by:	az
2014-10-28 11:20:30 +00:00
julian
d8e87db471 Stop pw(8) from segfaulting when given certain input
PR:187310
Submitted by:	Kim Shrier
Obtained from:	bug
MFC after:	1 week
2014-03-06 19:26:08 +00:00
bapt
a7f43aa146 Fix a regression in "pw group show" introduced r242349:
print a newline after printing each group line.

PR:		bin/174731
Submitted by:	Jan Beich <jbeich@tormail.org>
2012-12-27 14:44:13 +00:00
eadler
dd0944c119 Remove useless check for NULL prior to free.
Approved by:	cperciva
MFC after:	2 weeks
2012-12-05 13:56:43 +00:00
bapt
cfea627c58 Teach pw(8) about how to use pw/gr API to reduce code duplication
MFC after:	2 months
2012-10-30 08:00:53 +00:00
scf
c88c109632 Add the groupmod '-d' option to pw to allow the deletion of existing users
from a group without the need to perform the same operation by replacing
the existing list via the '-M' option.  The '-M' option requires someone
to fetch the existing members with pw, deleting the undesired members from
the list and sending the altered list back to pw.

Approved by:	wes (mentor)
MFC after:	5 days
2008-02-23 01:25:22 +00:00
scf
9787c9bf4e style(9) (verified no object changes)
Approved by:	wes (mentor)
MFC after:	5 days
2008-02-23 01:17:42 +00:00
iedowse
94e2d83c18 Add a -H <fd>' option that is like -h <fd>', but accepts an already
encrypted password on the specified file descriptor.

PR:		bin/22033
MFC after:	2 weeks
2004-01-11 18:28:08 +00:00
ache
77729ceb43 Localize time/date.
Use ISO 8601 date in logs.
Fix wrong argument type in ctype functions.
2000-06-22 16:48:41 +00:00
davidn
1b86060031 Portability fixes for other bsd4.4 derivatives. 2000-01-15 00:20:22 +00:00
davidn
091d630070 Add new functionality "lock" and "unlock" to provide a simple password
locking mechanism for users. This works by prepending the string
"*LOCKED*" to the password field in master.passwd to prevent successful
decoding.
1999-10-26 08:34:09 +00:00
davidn
7f7ff280d1 Clean up error handling in fileupdate(), which now returns 0 on success
instead of a boolean. This replicated through he front-end sub-functions
relating to add, delete, modify entries in passwd & group files
Errno is now preserved so output of errc()/warnc() will be less obfuscated
by subsequent errors when reporting the problem.

Add more intelligent error handling when attempting to modify/delete NIS
entries with no corresponding local database entry.

[MFC to stable in a couple of weeks to keep both in sync]
1999-10-26 04:27:14 +00:00
peter
efabb9ccb1 $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
davidn
aea1f6bc3c 1) Do not blindly ignore file update errors which may occur due to concurrent
updating
2) Add -V <etcdir>, which allows maintaining user/group database in alternate
   locations other than /etc.
1999-02-23 07:15:11 +00:00
charnier
c4198a70c7 Use err(3) instead of local redefinition. Add rcsid string. 1997-10-10 06:23:42 +00:00
peter
b782f4df30 Revert $FreeBSD$ to $Id$ 1997-02-22 16:15:28 +00:00
davidn
1a543bf107 Yet another formatting consistency check. 1997-02-07 11:31:42 +00:00