diff --git a/ChangeLog b/ChangeLog index de4f9e5e..c38fd6da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-11-17 Nicolas François + + * src/login.c: Log an error if the password entry could not be + found (respect LOG_UNKFAIL_ENAB to avoid logging a password). This + fixes the Debian bug http://bugs.debian.org/451521 + 2007-11-17 Nicolas François * man/useradd.8.xml: -b documenation: Use the same notation for diff --git a/src/login.c b/src/login.c index 75610d70..96f25ac5 100644 --- a/src/login.c +++ b/src/login.c @@ -739,16 +739,22 @@ int main (int argc, char **argv) pam_get_item (pamh, PAM_USER, (const void **) &pam_user); setpwent (); pwd = getpwnam (pam_user); + if (!pwd) { + SYSLOG ((LOG_ERR, "getpwnam(%s) failed", + getdef_bool ("LOG_UNKFAIL_ENAB") ? + pam_user : "UNKNOWN")); + exit (1); + } if (fflg) { retcode = pam_acct_mgmt (pamh, 0); PAM_FAIL_CHECK; } - if (!pwd || setup_groups (pwd)) + if (setup_groups (pwd)) { exit (1); - else - pwent = *pwd; + + pwent = *pwd; retcode = pam_setcred (pamh, PAM_ESTABLISH_CRED); PAM_FAIL_CHECK;