X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=source%2Fheimdal%2Flib%2Fkrb5%2Fget_cred.c;h=4a49337aa305c5a3cf5f6a9119e9138dd4761df2;hb=7ae683c63bbc7849503aeb12046b80837abc5384;hp=268550b22930bb8a35666208e93e796349aa1e7c;hpb=cd550daafda9c99d94c97f3ab3a8709233ab7d82;p=metze%2Fsamba%2Fwip.git diff --git a/source/heimdal/lib/krb5/get_cred.c b/source/heimdal/lib/krb5/get_cred.c index 268550b22930..4a49337aa305 100644 --- a/source/heimdal/lib/krb5/get_cred.c +++ b/source/heimdal/lib/krb5/get_cred.c @@ -407,6 +407,9 @@ get_cred_kdc(krb5_context context, size_t len; Ticket second_ticket_data; METHOD_DATA padata; + int again = 0; + +do_again: krb5_data_zero(&resp); krb5_data_zero(&enc); @@ -555,6 +558,11 @@ get_cred_kdc(krb5_context context, krb5_free_kdc_rep(context, &rep); } else if(krb5_rd_error(context, &resp, &error) == 0) { ret = krb5_error_from_rd_error(context, &error, in_creds); + if (ret == KRB5KRB_AP_ERR_SKEW) { +printf("reset time TGS\n"); + krb5_set_real_time(context, error.stime, 0); + again++; + } krb5_free_error_contents(context, &error); } else if(resp.data && ((char*)resp.data)[0] == 4) { ret = KRB5KRB_AP_ERR_V4_REPLY; @@ -574,6 +582,7 @@ out: krb5_free_keyblock_contents(context, subkey); free(subkey); } +if (ret && again == 1) goto do_again; return ret; }