[SSSD] [PATCH] Only call krb5_set_trace_callback on platforms that support it
Jakub Hrozek
jhrozek at redhat.com
Fri Oct 12 17:51:30 UTC 2012
On Fri, Oct 12, 2012 at 06:50:07PM +0200, Jakub Hrozek wrote:
> Hi,
>
> the krb5 tracing patch broke SSSD builds on RHEL5 and similar systems
> that don't support the tracing API. Attached is a patch that #ifdefs the
> tracing if the API is not available.
Simo nacked the original patch on IRC. A new patch is attached that
keeps the #ifdefs at one place.
-------------- next part --------------
>From 71a57b9f40f82c8072c980a77c75ed7b93c2adc4 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Fri, 12 Oct 2012 18:19:06 +0200
Subject: [PATCH] Only call krb5_set_trace_callback on platforms that support
it
---
src/external/krb5.m4 | 1 +
src/providers/krb5/krb5_child.c | 2 +-
src/providers/ldap/ldap_child.c | 2 +-
src/util/sss_krb5.c | 17 ++++++++++++++++-
src/util/sss_krb5.h | 5 ++---
5 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/src/external/krb5.m4 b/src/external/krb5.m4
index 474cb37cb44cd75fc606ed54833fe0a57b5acc6b..cb420aaed1b64ec19160c6700c664ec57e1efa8d 100644
--- a/src/external/krb5.m4
+++ b/src/external/krb5.m4
@@ -59,6 +59,7 @@ AC_CHECK_FUNCS([krb5_get_init_creds_opt_alloc krb5_get_error_message \
krb5_principal_get_realm \
krb5_cc_cache_match \
krb5_timestamp_to_sfstring \
+ krb5_set_trace_callback \
krb5_cc_get_full_name])
CFLAGS=$SAVE_CFLAGS
LIBS=$SAVE_LIBS
diff --git a/src/providers/krb5/krb5_child.c b/src/providers/krb5/krb5_child.c
index cd826add0c34fc798541798bd3e544a317658729..a92ba57bf3219cd6899a6b29e2f2555aae6bb323 100644
--- a/src/providers/krb5/krb5_child.c
+++ b/src/providers/krb5/krb5_child.c
@@ -1625,7 +1625,7 @@ set_child_debugging(krb5_context ctx)
krb5_error_ctx = ctx;
if (debug_level & SSSDBG_TRACE_ALL) {
- kerr = krb5_set_trace_callback(ctx, sss_child_krb5_trace_cb, NULL);
+ kerr = sss_child_set_krb5_tracing(ctx);
if (kerr) {
KRB5_CHILD_DEBUG(SSSDBG_MINOR_FAILURE, kerr);
return EIO;
diff --git a/src/providers/ldap/ldap_child.c b/src/providers/ldap/ldap_child.c
index de25fc073a674df02435987d50681b38db79ca20..e0529dbc4cdcc8ef92f6a8a390dace72df225d03 100644
--- a/src/providers/ldap/ldap_child.c
+++ b/src/providers/ldap/ldap_child.c
@@ -150,7 +150,7 @@ set_child_debugging(krb5_context ctx)
krb5_error_ctx = ctx;
if (debug_level & SSSDBG_TRACE_ALL) {
- kerr = krb5_set_trace_callback(ctx, sss_child_krb5_trace_cb, NULL);
+ kerr = sss_child_set_krb5_tracing(ctx);
if (kerr) {
LDAP_CHILD_DEBUG(SSSDBG_MINOR_FAILURE, kerr);
return EIO;
diff --git a/src/util/sss_krb5.c b/src/util/sss_krb5.c
index 0a80f23a8017a0aed245ca6a376a3d1fe6c8ca87..c36a13748518b18f47108d87d1dcc6e93125794d 100644
--- a/src/util/sss_krb5.c
+++ b/src/util/sss_krb5.c
@@ -964,7 +964,8 @@ sss_krb5_residual_check_type(const char *full_location,
return sss_krb5_residual_by_type(full_location, type);
}
-void
+#ifdef HAVE_KRB5_SET_TRACE_CALLBACK
+static void
sss_child_krb5_trace_cb(krb5_context context,
const struct krb5_trace_info *info, void *data)
{
@@ -975,3 +976,17 @@ sss_child_krb5_trace_cb(krb5_context context,
DEBUG(SSSDBG_TRACE_ALL, ("%s\n", info->message));
}
+
+errno_t
+sss_child_set_krb5_tracing(krb5_context ctx)
+{
+ return krb5_set_trace_callback(ctx, sss_child_krb5_trace_cb, NULL);
+}
+#else /* HAVE_KRB5_SET_TRACE_CALLBACK */
+errno_t
+sss_child_set_krb5_tracing(krb5_context ctx)
+{
+ DEBUG(SSSDBG_CONF_SETTINGS, ("krb5 tracing is not available\n"));
+ return 0;
+}
+#endif /* HAVE_KRB5_SET_TRACE_CALLBACK */
diff --git a/src/util/sss_krb5.h b/src/util/sss_krb5.h
index 708914c6c532ea9865b59e5eca1d224bc09d622e..c16dab59a59868b27ac5f06ae942f1ddfe227895 100644
--- a/src/util/sss_krb5.h
+++ b/src/util/sss_krb5.h
@@ -167,8 +167,7 @@ typedef krb5_ticket_times sss_krb5_ticket_times;
typedef krb5_times sss_krb5_ticket_times;
#endif
-void
-sss_child_krb5_trace_cb(krb5_context context,
- const struct krb5_trace_info *info, void *data);
+/* Redirect libkrb5 tracing towards our DEBUG statements */
+errno_t sss_child_set_krb5_tracing(krb5_context ctx);
#endif /* __SSS_KRB5_H__ */
--
1.7.11.4
More information about the sssd-devel
mailing list