From 85bc9c1d1a782dfe41eb3bfba2d7f4823ea2f518 Mon Sep 17 00:00:00 2001 From: nekral-guest Date: Thu, 7 Aug 2008 08:03:55 +0000 Subject: [PATCH] * src/pwunconv.c: Report failure to unlock the passwd or shadow file to stderr and syslog. --- ChangeLog | 11 ++++++++--- src/pwunconv.c | 26 +++++++++++++++++++++----- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 111625a0..3d01c5d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,17 @@ 2008-08-07 Nicolas François - * src/usermod.c: Report failure to unlock the passwd or shadow + * src/pwunconv.c: Report failure to unlock the passwd or shadow file to stderr and syslog. 2008-08-07 Nicolas François - * src/newusers.c: Report failure to unlock the passwd or shadow - file to stderr and syslog. + * src/usermod.c: Report failure to unlock files to stderr and + syslog. + +2008-08-07 Nicolas François + + * src/newusers.c: Report failure to unlock files to stderr and + syslog. * src/newusers.c: In case of error when files are open or closed, indicate the failing file. * src/newusers.c: Do not try to unlock the files manually since diff --git a/src/pwunconv.c b/src/pwunconv.c index e38097b4..c392c349 100644 --- a/src/pwunconv.c +++ b/src/pwunconv.c @@ -51,15 +51,23 @@ static bool shadow_locked = false; static bool passwd_locked = false; /* local function prototypes */ -static void fail_exit (int); +static void fail_exit (int status); static void fail_exit (int status) { if (shadow_locked) { - spw_unlock (); + if (spw_unlock () == 0) { + fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); + /* continue */ + } } if (passwd_locked) { - pw_unlock (); + if (pw_unlock () == 0) { + fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); + /* continue */ + } } exit (status); } @@ -164,8 +172,16 @@ int main (int argc, char **argv) fail_exit (3); } - spw_unlock (); - pw_unlock (); + if (spw_unlock () == 0) { + fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); + /* continue */ + } + if (pw_unlock () == 0) { + fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); + /* continue */ + } nscd_flush_cache ("passwd");