Simplify how we count the password tries

This commit is contained in:
Todd C. Miller
2014-09-27 10:17:21 -06:00
parent 355834c76a
commit b7444e0f83

View File

@@ -190,9 +190,8 @@ user_interrupted(void)
int int
verify_user(struct passwd *pw, char *prompt, int validated) verify_user(struct passwd *pw, char *prompt, int validated)
{ {
unsigned int counter = def_passwd_tries + 1; unsigned int ntries;
int success = AUTH_FAILURE; int rval, status, success = AUTH_FAILURE;
int status, rval;
char *p; char *p;
sudo_auth *auth; sudo_auth *auth;
sigset_t mask, omask; sigset_t mask, omask;
@@ -226,14 +225,14 @@ verify_user(struct passwd *pw, char *prompt, int validated)
sigaddset(&mask, SIGQUIT); sigaddset(&mask, SIGQUIT);
(void) sigprocmask(SIG_BLOCK, &mask, &omask); (void) sigprocmask(SIG_BLOCK, &mask, &omask);
while (--counter) { for (ntries = 0; ntries < def_passwd_tries; ntries++) {
int num_methods = 0; int num_methods = 0;
/* If user attempted to interrupt password verify, quit now. */ /* If user attempted to interrupt password verify, quit now. */
if (user_interrupted()) if (user_interrupted())
goto done; goto done;
if (counter != def_passwd_tries) if (ntries != 0)
pass_warn(); pass_warn();
/* Do any per-method setup and unconfigure the method if needed */ /* Do any per-method setup and unconfigure the method if needed */
@@ -293,9 +292,9 @@ done:
break; break;
case AUTH_INTR: case AUTH_INTR:
case AUTH_FAILURE: case AUTH_FAILURE:
if (counter != def_passwd_tries) if (ntries != 0)
validated |= FLAG_BAD_PASSWORD; validated |= FLAG_BAD_PASSWORD;
log_auth_failure(validated, def_passwd_tries - counter); log_auth_failure(validated, ntries);
rval = false; rval = false;
break; break;
case AUTH_FATAL: case AUTH_FATAL: