* src/gpasswd.c: Warn and log to syslog and audit when group or

gshadow cannot be unlocked, but do not fail.
This commit is contained in:
nekral-guest 2008-08-06 15:52:42 +00:00
parent 9eea2344fc
commit 2bf3f0c03c
2 changed files with 30 additions and 5 deletions

View File

@ -1,6 +1,8 @@
2008-08-01 Nicolas François <nicolas.francois@centraliens.net> 2008-08-01 Nicolas François <nicolas.francois@centraliens.net>
* src/gpasswd.c: Harmonize error & syslog messages. * src/gpasswd.c: Harmonize error & syslog messages.
* src/gpasswd.c: Warn and log to syslog and audit when group or
gshadow cannot be unlocked, but do not fail.
2008-08-01 Nicolas François <nicolas.francois@centraliens.net> 2008-08-01 Nicolas François <nicolas.francois@centraliens.net>

View File

@ -161,11 +161,27 @@ static RETSIGTYPE catch_signals (int killed)
static void fail_exit (int status) static void fail_exit (int status)
{ {
if (group_locked) { if (group_locked) {
gr_unlock (); if (gr_unlock () == 0) {
fprintf (stderr, _("%s: cannot unlock the group file\n"), Prog);
SYSLOG ((LOG_WARN, "cannot unlock the group file"));
#ifdef WITH_AUDIT
audit_logger (AUDIT_USER_CHAUTHTOK, Prog,
"unlocking group file",
group, AUDIT_NO_ID, 0);
#endif
}
} }
#ifdef SHADOWGRP #ifdef SHADOWGRP
if (gshadow_locked) { if (gshadow_locked) {
sgr_unlock (); if (sgr_unlock () == 0) {
fprintf (stderr, _("%s: cannot unlock the shadow group file\n"), Prog);
SYSLOG ((LOG_WARN, "cannot unlock the shadow group file"));
#ifdef WITH_AUDIT
audit_logger (AUDIT_USER_CHAUTHTOK, Prog,
"unlocking gshadow file",
group, AUDIT_NO_ID, 0);
#endif
}
} }
#endif #endif
@ -433,19 +449,26 @@ static void close_files (void)
fail_exit (1); fail_exit (1);
} }
if (is_shadowgrp) { if (is_shadowgrp) {
/* TODO: same logging as in open_files & for /etc/group */ if (sgr_unlock () == 0) {
sgr_unlock (); fprintf (stderr, _("%s: cannot unlock the shadow group file\n"), Prog);
SYSLOG ((LOG_WARN, "cannot unlock the shadow group file"));
#ifdef WITH_AUDIT
audit_logger (AUDIT_USER_CHAUTHTOK, Prog,
"unlocking gshadow file",
group, AUDIT_NO_ID, 0);
#endif
}
gshadow_locked = false; gshadow_locked = false;
} }
#endif #endif
if (gr_unlock () == 0) { if (gr_unlock () == 0) {
fprintf (stderr, _("%s: cannot unlock the group file\n"), Prog); fprintf (stderr, _("%s: cannot unlock the group file\n"), Prog);
SYSLOG ((LOG_WARN, "cannot unlock the group file"));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_USER_CHAUTHTOK, Prog, audit_logger (AUDIT_USER_CHAUTHTOK, Prog,
"unlocking group file", "unlocking group file",
group, AUDIT_NO_ID, 0); group, AUDIT_NO_ID, 0);
#endif #endif
exit (1);
} }
group_locked = false; group_locked = false;
} }