Author: gd
Date: 2006-01-18 22:40:00 +0000 (Wed, 18 Jan 2006)
New Revision: 13020

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

Log:
Prevent cli_krb5_get_ticket of getting into an infite loop. This whole
area of code needs to be reworked later on.

Guenther

Modified:
   branches/SAMBA_3_0/source/libsmb/clikrb5.c
   trunk/source/libsmb/clikrb5.c


Changeset:
Modified: branches/SAMBA_3_0/source/libsmb/clikrb5.c
===================================================================
--- branches/SAMBA_3_0/source/libsmb/clikrb5.c  2006-01-18 21:52:19 UTC (rev 
13019)
+++ branches/SAMBA_3_0/source/libsmb/clikrb5.c  2006-01-18 22:40:00 UTC (rev 
13020)
@@ -456,6 +456,7 @@
        krb5_creds                creds;
        krb5_data in_data;
        BOOL creds_ready = False;
+       int i = 0, maxtries = 3;
        
        retval = krb5_parse_name(context, principal, &server);
        if (retval) {
@@ -479,7 +480,7 @@
                goto cleanup_creds;
        }
 
-       while(!creds_ready) {
+       while (!creds_ready && (i < maxtries)) {
                if ((retval = krb5_get_credentials(context, 0, ccache, 
                                                   &creds, &credsp))) {
                        DEBUG(1,("ads_krb5_mk_req: krb5_get_credentials failed 
for %s (%s)\n",
@@ -497,6 +498,8 @@
 
                if (!ads_cleanup_expired_creds(context, ccache, credsp))
                        creds_ready = True;
+
+               i++;
        }
 
        DEBUG(10,("ads_krb5_mk_req: Ticket (%s) in ccache (%s) is valid until: 
(%s - %u)\n",

Modified: trunk/source/libsmb/clikrb5.c
===================================================================
--- trunk/source/libsmb/clikrb5.c       2006-01-18 21:52:19 UTC (rev 13019)
+++ trunk/source/libsmb/clikrb5.c       2006-01-18 22:40:00 UTC (rev 13020)
@@ -457,6 +457,7 @@
        krb5_creds                creds;
        krb5_data in_data;
        BOOL creds_ready = False;
+       int i = 0, maxtries = 3;
        
        retval = krb5_parse_name(context, principal, &server);
        if (retval) {
@@ -480,7 +481,7 @@
                goto cleanup_creds;
        }
 
-       while(!creds_ready) {
+       while (!creds_ready && (i < maxtries)) {
                if ((retval = krb5_get_credentials(context, 0, ccache, 
                                                   &creds, &credsp))) {
                        DEBUG(1,("ads_krb5_mk_req: krb5_get_credentials failed 
for %s (%s)\n",
@@ -498,6 +499,8 @@
 
                if (!ads_cleanup_expired_creds(context, ccache, credsp))
                        creds_ready = True;
+
+               i++;
        }
 
        DEBUG(10,("ads_krb5_mk_req: Ticket (%s) in ccache (%s:%s) is valid 
until: (%s - %u)\n",

Reply via email to