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",
