HACK clock skew when getting tickets...
[metze/samba/wip.git] / source / heimdal / lib / krb5 / get_cred.c
index 268550b22930bb8a35666208e93e796349aa1e7c..4a49337aa305c5a3cf5f6a9119e9138dd4761df2 100644 (file)
@@ -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;
 
 }