Author: jelmer
Date: 2006-05-03 14:15:31 +0000 (Wed, 03 May 2006)
New Revision: 15414

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=15414

Log:
Support retrying different username/password combinations

Modified:
   branches/SAMBA_4_0/source/auth/credentials/credentials.c
   branches/SAMBA_4_0/source/auth/credentials/credentials.h


Changeset:
Modified: branches/SAMBA_4_0/source/auth/credentials/credentials.c
===================================================================
--- branches/SAMBA_4_0/source/auth/credentials/credentials.c    2006-05-03 
11:52:20 UTC (rev 15413)
+++ branches/SAMBA_4_0/source/auth/credentials/credentials.c    2006-05-03 
14:15:31 UTC (rev 15414)
@@ -639,3 +639,24 @@
 
        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);
+}

Modified: branches/SAMBA_4_0/source/auth/credentials/credentials.h
===================================================================
--- branches/SAMBA_4_0/source/auth/credentials/credentials.h    2006-05-03 
11:52:20 UTC (rev 15413)
+++ branches/SAMBA_4_0/source/auth/credentials/credentials.h    2006-05-03 
14:15:31 UTC (rev 15414)
@@ -3,7 +3,7 @@
 
    Client credentials structure
 
-   Copyright (C) Jelmer Vernooij 2004-2005
+   Copyright (C) Jelmer Vernooij 2004-2006
    Copyright (C) Andrew Bartlett <[EMAIL PROTECTED]> 2005
 
    This program is free software; you can redistribute it and/or modify
@@ -33,6 +33,7 @@
        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 @@
 
        /* 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"

Reply via email to