+2007-11-17 Nicolas François <nicolas.francois@centraliens.net>
+
+ * NEWS, src/userdel.c: Abort if an error is found while updating the
+ user or group database. No changes will be written in the
+ databases.
+
2007-11-17 Nicolas François <nicolas.francois@centraliens.net>
* src/useradd.c: It is no more needed to check that the user's
containing two entries with the same name. (The fix strategy differs
from
(https://bugzilla.redhat.com/show_bug.cgi?id=240915)
+- userdel: Abort if an error is detected while updating the passwd or group
+ databases. The passwd or group files will not be written.
shadow-4.0.18.1 -> shadow-4.0.18.2 28-10-2007
exit (13); /* XXX */
}
ngrp->gr_mem = del_list (ngrp->gr_mem, user_name);
- if (!gr_update (ngrp))
+ if (!gr_update (ngrp)) {
fprintf (stderr,
_("%s: error updating group entry\n"), Prog);
+ exit (E_GRP_UPDATE);
+ }
/*
* Update the DBM group file with the new entry as well.
if (was_admin)
nsgrp->sg_adm = del_list (nsgrp->sg_adm, user_name);
- if (!sgr_update (nsgrp))
+ if (!sgr_update (nsgrp)) {
fprintf (stderr,
_("%s: error updating group entry\n"), Prog);
+ exit (E_GRP_UPDATE);
+ }
#ifdef WITH_AUDIT
audit_logger (AUDIT_USER_CHAUTHTOK, Prog,
"deleting user from shadow group", user_name,
*/
static void update_user (void)
{
- if (!pw_remove (user_name))
+ if (!pw_remove (user_name)) {
fprintf (stderr,
_("%s: error deleting password entry\n"), Prog);
- if (is_shadow_pwd && !spw_remove (user_name))
+ fail_exit (E_PW_UPDATE);
+ }
+ if (is_shadow_pwd && !spw_remove (user_name)) {
fprintf (stderr,
_("%s: error deleting shadow password entry\n"), Prog);
+ fail_exit (E_PW_UPDATE);
+ }
#ifdef WITH_AUDIT
audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "deleting user entries",
user_name, user_id, 1);