From 4a25e68cd863318f18b2ca78cf6efa7a1921d33a Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Tue, 15 Oct 2013 13:44:44 +0200 Subject: heimdal: Add wrapper for krb5_get_time_offsets Using krb5_get_kdc_sec_offset from heimdal. --- src/external/krb5.m4 | 1 + src/providers/ldap/ldap_child.c | 7 +------ src/util/sss_krb5.c | 22 ++++++++++++++++++++++ src/util/sss_krb5.h | 4 ++++ 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/external/krb5.m4 b/src/external/krb5.m4 index ff4924f3..7cad5cb9 100644 --- a/src/external/krb5.m4 +++ b/src/external/krb5.m4 @@ -60,6 +60,7 @@ AC_CHECK_FUNCS([krb5_get_init_creds_opt_alloc krb5_get_error_message \ krb5_kt_free_entry \ krb5_princ_realm \ krb5_get_time_offsets \ + krb5_get_kdc_sec_offset \ krb5_principal_get_realm \ krb5_cc_cache_match \ krb5_timestamp_to_sfstring \ diff --git a/src/providers/ldap/ldap_child.c b/src/providers/ldap/ldap_child.c index 19c838da..465ea676 100644 --- a/src/providers/ldap/ldap_child.c +++ b/src/providers/ldap/ldap_child.c @@ -343,8 +343,7 @@ static krb5_error_code ldap_child_get_tgt_sync(TALLOC_CTX *memctx, } DEBUG(SSSDBG_TRACE_INTERNAL, ("credentials stored\n")); -#ifdef HAVE_KRB5_GET_TIME_OFFSETS - krberr = krb5_get_time_offsets(context, &kdc_time_offset, + krberr = sss_krb5_get_time_offsets(context, &kdc_time_offset, &kdc_time_offset_usec); if (krberr) { DEBUG(SSSDBG_OP_FAILURE, ("Failed to get KDC time offset: %s\n", @@ -356,10 +355,6 @@ static krb5_error_code ldap_child_get_tgt_sync(TALLOC_CTX *memctx, } } DEBUG(SSSDBG_TRACE_INTERNAL, ("Got KDC time offset\n")); -#else - /* If we don't have this function, just assume no offset */ - kdc_time_offset = 0; -#endif krberr = 0; *ccname_out = ccname; diff --git a/src/util/sss_krb5.c b/src/util/sss_krb5.c index c9b16107..6382c1aa 100644 --- a/src/util/sss_krb5.c +++ b/src/util/sss_krb5.c @@ -1098,3 +1098,25 @@ sss_krb5_unparse_name_ext(krb5_context ctx, return kerr; } + +krb5_error_code KRB5_CALLCONV +sss_krb5_get_time_offsets(krb5_context ctx, + krb5_timestamp *seconds, + int32_t *microseconds) +{ +#if defined(HAVE_KRB5_GET_TIME_OFFSETS) + return krb5_get_time_offsets(ctx, seconds, microseconds); +#elif defined(HAVE_KRB5_GET_KDC_SEC_OFFSET) + int32_t _seconds; + krb5_error_code ret; + + ret = krb5_get_kdc_sec_offset(ctx, &_seconds, microseconds); + *seconds = _seconds; + return ret; +#else + (void) ctx; + *seconds = 0; + *microseconds = 0; + return 0; +#endif +} diff --git a/src/util/sss_krb5.h b/src/util/sss_krb5.h index c8f2d4d7..2ddcca97 100644 --- a/src/util/sss_krb5.h +++ b/src/util/sss_krb5.h @@ -192,4 +192,8 @@ sss_krb5_unparse_name_ext(krb5_context ctx, krb5_const_principal principal, char **name, unsigned int *len); +krb5_error_code KRB5_CALLCONV +sss_krb5_get_time_offsets(krb5_context ctx, + krb5_timestamp *seconds, + int32_t *microseconds); #endif /* __SSS_KRB5_H__ */ -- cgit