Simplify how we count the password tries
This commit is contained in:
@@ -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:
|
||||||
|
Reference in New Issue
Block a user