Abort if an error is found while updating the user or group database. No

changes will be written in the databases.
This commit is contained in:
nekral-guest 2007-11-16 23:26:56 +00:00
parent b370e1502e
commit 0325483ee4
3 changed files with 20 additions and 4 deletions

View File

@ -1,3 +1,9 @@
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> 2007-11-17 Nicolas François <nicolas.francois@centraliens.net>
* src/useradd.c: It is no more needed to check that the user's * src/useradd.c: It is no more needed to check that the user's

2
NEWS
View File

@ -25,6 +25,8 @@ shadow-4.0.18.1 -> shadow-4.0.18.2 UNRELEASED
containing two entries with the same name. (The fix strategy differs containing two entries with the same name. (The fix strategy differs
from from
(https://bugzilla.redhat.com/show_bug.cgi?id=240915) (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 shadow-4.0.18.1 -> shadow-4.0.18.2 28-10-2007

View File

@ -153,9 +153,11 @@ static void update_groups (void)
exit (13); /* XXX */ exit (13); /* XXX */
} }
ngrp->gr_mem = del_list (ngrp->gr_mem, user_name); ngrp->gr_mem = del_list (ngrp->gr_mem, user_name);
if (!gr_update (ngrp)) if (!gr_update (ngrp)) {
fprintf (stderr, fprintf (stderr,
_("%s: error updating group entry\n"), Prog); _("%s: error updating group entry\n"), Prog);
exit (E_GRP_UPDATE);
}
/* /*
* Update the DBM group file with the new entry as well. * Update the DBM group file with the new entry as well.
@ -252,9 +254,11 @@ static void update_groups (void)
if (was_admin) if (was_admin)
nsgrp->sg_adm = del_list (nsgrp->sg_adm, user_name); nsgrp->sg_adm = del_list (nsgrp->sg_adm, user_name);
if (!sgr_update (nsgrp)) if (!sgr_update (nsgrp)) {
fprintf (stderr, fprintf (stderr,
_("%s: error updating group entry\n"), Prog); _("%s: error updating group entry\n"), Prog);
exit (E_GRP_UPDATE);
}
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_USER_CHAUTHTOK, Prog, audit_logger (AUDIT_USER_CHAUTHTOK, Prog,
"deleting user from shadow group", user_name, "deleting user from shadow group", user_name,
@ -411,12 +415,16 @@ static void open_files (void)
*/ */
static void update_user (void) static void update_user (void)
{ {
if (!pw_remove (user_name)) if (!pw_remove (user_name)) {
fprintf (stderr, fprintf (stderr,
_("%s: error deleting password entry\n"), Prog); _("%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, fprintf (stderr,
_("%s: error deleting shadow password entry\n"), Prog); _("%s: error deleting shadow password entry\n"), Prog);
fail_exit (E_PW_UPDATE);
}
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "deleting user entries", audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "deleting user entries",
user_name, user_id, 1); user_name, user_id, 1);