diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2006-05-03 14:15:31 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:05:34 -0500 |
commit | 557c98bd5f4e5268d4793d51037f59ef3482fe8c (patch) | |
tree | cfc61eb2cc2891440f651a8622a397698fd8e53e | |
parent | bec9dad2940b4da9187469992436c2bfd67e0ac0 (diff) | |
download | samba-557c98bd5f4e5268d4793d51037f59ef3482fe8c.tar.gz samba-557c98bd5f4e5268d4793d51037f59ef3482fe8c.tar.bz2 samba-557c98bd5f4e5268d4793d51037f59ef3482fe8c.zip |
r15414: Support retrying different username/password combinations
(This used to be commit 5de894fb8bac8efa5bff004dbfc2e8b386d4003b)
-rw-r--r-- | source4/auth/credentials/credentials.c | 21 | ||||
-rw-r--r-- | source4/auth/credentials/credentials.h | 6 |
2 files changed, 26 insertions, 1 deletions
diff --git a/source4/auth/credentials/credentials.c b/source4/auth/credentials/credentials.c index ee90c8228a..66b6c120cf 100644 --- a/source4/auth/credentials/credentials.c +++ b/source4/auth/credentials/credentials.c @@ -639,3 +639,24 @@ BOOL cli_credentials_is_anonymous(struct cli_credentials *cred) return False; } + +/** + * Mark the current password for a credentials struct as wrong. This will + * cause the password to be prompted again (if a callback is set). + * + * This will decremebt the number of times the password can be tried. + * + * @retval whether the credentials struct is finished + */ +BOOL cli_credentials_wrong_password(struct cli_credentials *cred) +{ + if (cred->password_obtained != CRED_CALLBACK_RESULT) { + return False; + } + + cred->password_obtained = CRED_CALLBACK; + + cred->tries--; + + return (cred->tries > 0); +} diff --git a/source4/auth/credentials/credentials.h b/source4/auth/credentials/credentials.h index 2e9d77ccae..c0fec45b6f 100644 --- a/source4/auth/credentials/credentials.h +++ b/source4/auth/credentials/credentials.h @@ -3,7 +3,7 @@ Client credentials structure - Copyright (C) Jelmer Vernooij 2004-2005 + Copyright (C) Jelmer Vernooij 2004-2006 Copyright (C) Andrew Bartlett <abartlet@samba.org> 2005 This program is free software; you can redistribute it and/or modify @@ -33,6 +33,7 @@ enum credentials_obtained { CRED_GUESS_ENV, /* Current value should be used, which was guessed */ CRED_CALLBACK, /* Callback should be used to obtain value */ CRED_GUESS_FILE, /* A guess from a file (or file pointed at in env variable) */ + CRED_CALLBACK_RESULT, /* Value was obtained from a callback */ CRED_SPECIFIED /* Was explicitly specified on the command-line */ }; @@ -104,6 +105,9 @@ struct cli_credentials { /* Should we be trying to use kerberos? */ enum credentials_use_kerberos use_kerberos; + + /* Number of retries left before bailing out */ + int tries; }; #include "auth/credentials/credentials_proto.h" |