* NEWS, src/userdel.c: Make sure the user exists in the shadow

database before calling spw_remove().
	* NEWS, src/userdel.c: When the user's group is removed, make sure
	the group is in the gshadow database before calling sgr_remove().
	* src/userdel.c: Improve warning's wording.
This commit is contained in:
nekral-guest 2009-03-15 21:29:16 +00:00
parent 9fda9f5c28
commit 9372111aaa
3 changed files with 17 additions and 4 deletions

View File

@ -1,3 +1,11 @@
2009-03-15 Nicolas François <nicolas.francois@centraliens.net>
* NEWS, src/userdel.c: Make sure the user exists in the shadow
database before calling spw_remove().
* NEWS, src/userdel.c: When the user's group is removed, make sure
the group is in the gshadow database before calling sgr_remove().
* src/userdel.c: Improve warning's wording.
2009-03-15 Nicolas François <nicolas.francois@centraliens.net>
* libmisc/cleanup.c: Fix del_cleanup. The arguments were not

3
NEWS
View File

@ -98,6 +98,9 @@ shadow-4.1.2.2 -> shadow-4.1.3 UNRELEASED
* do not create users with UID set to (gid_t)-1.
- userdel
* audit logging improvements.
* Do not fail if the removed user is not in the shadow database.
* When the user's group shall be removed, do not fail if this group is
not in the gshadow file.
- usermod
* Allow adding LDAP users (or any user not present in the local passwd
file) to local groups

View File

@ -216,7 +216,7 @@ static void update_groups (void)
}
if (pwd->pw_gid == grp->gr_gid) {
fprintf (stderr,
_("%s: Cannot remove group %s which is a primary group for another user.\n"),
_("%s: group %s is the primary group of another user and is not removed.\n"),
Prog, grp->gr_name);
break;
}
@ -309,8 +309,8 @@ static void update_groups (void)
user_name, nsgrp->sg_name));
}
if (deleted_user_group) {
/* FIXME: Test if the group is in gshadow first? */
if ( deleted_user_group
&& (sgr_locate (user_name) != NULL)) {
if (sgr_remove (user_name) == 0) {
fprintf (stderr,
_("%s: cannot remove entry '%s' from %s\n"),
@ -559,7 +559,9 @@ static void update_user (void)
Prog, user_name, pw_dbname ());
fail_exit (E_PW_UPDATE);
}
if (is_shadow_pwd && (spw_remove (user_name) == 0)) {
if ( is_shadow_pwd
&& (spw_locate (user_name) != NULL)
&& (spw_remove (user_name) == 0)) {
fprintf (stderr,
_("%s: cannot remove entry '%s' from %s\n"),
Prog, user_name, spw_dbname ());