From adfad7302a190f87d95b233b08df6e6c9457944b Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Tue, 15 Oct 2013 12:50:43 +0200 Subject: heimdal: Add wrapper for krb5_unparse_name_ext Use krb5_unparse_name in heimdal and calculate length using strlen. --- src/external/krb5.m4 | 1 + src/providers/krb5/krb5_child.c | 3 ++- src/util/sss_krb5.c | 19 +++++++++++++++++++ src/util/sss_krb5.h | 6 ++++++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/external/krb5.m4 b/src/external/krb5.m4 index ba92da2a..ff4924f3 100644 --- a/src/external/krb5.m4 +++ b/src/external/krb5.m4 @@ -46,6 +46,7 @@ AC_CHECK_TYPES([krb5_ticket_times, krb5_times, krb5_trace_info], [], [], #endif ]) AC_CHECK_FUNCS([krb5_get_init_creds_opt_alloc krb5_get_error_message \ + krb5_unparse_name_ext \ krb5_free_unparsed_name \ krb5_get_init_creds_opt_set_expire_callback \ krb5_get_init_creds_opt_set_fast_ccache_name \ diff --git a/src/providers/krb5/krb5_child.c b/src/providers/krb5/krb5_child.c index fe5ceb6e..429ecef1 100644 --- a/src/providers/krb5/krb5_child.c +++ b/src/providers/krb5/krb5_child.c @@ -673,7 +673,8 @@ static errno_t add_ticket_times_and_upn_to_response(struct krb5_req *kr) goto done; } - kerr = krb5_unparse_name_ext(kr->ctx, kr->creds->client, &upn, &upn_len); + kerr = sss_krb5_unparse_name_ext(kr->ctx, kr->creds->client, + &upn, &upn_len); if (kerr != 0) { DEBUG(SSSDBG_OP_FAILURE, ("krb5_unparse_name failed.\n")); goto done; diff --git a/src/util/sss_krb5.c b/src/util/sss_krb5.c index 5f36f7e9..c9b16107 100644 --- a/src/util/sss_krb5.c +++ b/src/util/sss_krb5.c @@ -1079,3 +1079,22 @@ done: return NULL; #endif /* HAVE_KRB5_CC_COLLECTION */ } + +krb5_error_code KRB5_CALLCONV +sss_krb5_unparse_name_ext(krb5_context ctx, + krb5_const_principal principal, + char **name, + unsigned int *len) +{ + krb5_error_code kerr; + +#ifdef HAVE_KRB5_UNPARSE_NAME_EXT + kerr = krb5_unparse_name_ext(ctx, principal, name, len); +#else + kerr = krb5_unparse_name(ctx, principal, name); + if (kerr == 0 && *name) + *len = strlen(*name); +#endif /* HAVE_KRB5_UNPARSE_NAME_EXT */ + + return kerr; +} diff --git a/src/util/sss_krb5.h b/src/util/sss_krb5.h index 43243735..c8f2d4d7 100644 --- a/src/util/sss_krb5.h +++ b/src/util/sss_krb5.h @@ -186,4 +186,10 @@ char * sss_get_ccache_name_for_principal(TALLOC_CTX *mem_ctx, krb5_context ctx, krb5_principal principal, const char *location); + +krb5_error_code KRB5_CALLCONV +sss_krb5_unparse_name_ext(krb5_context ctx, + krb5_const_principal principal, + char **name, + unsigned int *len); #endif /* __SSS_KRB5_H__ */ -- cgit