summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/auth/kerberos/clikrb5.c4
-rw-r--r--source4/auth/kerberos/config.m413
-rw-r--r--source4/auth/kerberos/kerberos.h8
3 files changed, 23 insertions, 2 deletions
diff --git a/source4/auth/kerberos/clikrb5.c b/source4/auth/kerberos/clikrb5.c
index dc02cf7b01..3858b694a7 100644
--- a/source4/auth/kerberos/clikrb5.c
+++ b/source4/auth/kerberos/clikrb5.c
@@ -484,7 +484,7 @@ static int smb_krb5_context_destory_1(void *ptr)
return 0;
}
-#if defined(HAVE_KRB5_INITLOG) && defined(HAVE_KRB5_ADDLOG_FUNC) && defined(HAVE_KRB5_FREELOG)
+#ifdef HAVE_KRB5_LOGGING_CONTROL
static int smb_krb5_context_destory_2(void *ptr)
{
struct smb_krb5_context *ctx = ptr;
@@ -547,7 +547,7 @@ static void smb_krb5_debug_wrapper(const char *timestr, const char *msg, void *p
}
}
-#if defined(HAVE_KRB5_INITLOG) && defined(HAVE_KRB5_ADDLOG_FUNC) && defined(HAVE_KRB5_FREELOG)
+#ifdef HAVE_KRB5_LOGGING_CONTROL
/* TODO: Should we have a different name here? */
ret = krb5_initlog((*smb_krb5_context)->krb5_context, "Samba", &(*smb_krb5_context)->logf);
diff --git a/source4/auth/kerberos/config.m4 b/source4/auth/kerberos/config.m4
index 010a1c85da..0c24828907 100644
--- a/source4/auth/kerberos/config.m4
+++ b/source4/auth/kerberos/config.m4
@@ -263,9 +263,22 @@ if test x"$with_krb5_support" != x"no"; then
AC_CHECK_FUNC_EXT(krb5_initlog, $KRB5_LIBS)
AC_CHECK_FUNC_EXT(krb5_freelog, $KRB5_LIBS)
AC_CHECK_FUNC_EXT(krb5_addlog_func, $KRB5_LIBS)
+ AC_CHECK_FUNC_EXT(krb5_set_warn_dest, $KRB5_LIBS)
LIBS="$LIBS $KRB5_LIBS"
+ AC_CACHE_CHECK([for krb5_log_facility type],
+ samba_cv_HAVE_KRB5_LOG_FACILITY,[
+ AC_TRY_COMPILE([#include <krb5.h>],
+ [krb5_log_facility block;],
+ samba_cv_HAVE_KRB5_LOG_FACILITY=yes,
+ samba_cv_HAVE_KRB5_LOG_FACILITY=no)])
+
+ if test x"$samba_cv_HAVE_KRB5_LOG_FACILITY" = x"yes"; then
+ AC_DEFINE(HAVE_KRB5_LOG_FACILITY,1,
+ [Whether the type krb5_log_facility exists])
+ fi
+
AC_CACHE_CHECK([for krb5_encrypt_block type],
samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
AC_TRY_COMPILE([#include <krb5.h>],
diff --git a/source4/auth/kerberos/kerberos.h b/source4/auth/kerberos/kerberos.h
index b65416e619..286e8ceb2e 100644
--- a/source4/auth/kerberos/kerberos.h
+++ b/source4/auth/kerberos/kerberos.h
@@ -21,9 +21,17 @@
#if defined(HAVE_KRB5)
+#if defined(HAVE_KRB5_INITLOG) && defined(HAVE_KRB5_ADDLOG_FUNC) && defined(HAVE_KRB5_FREELOG) && defined (HAVE_KRB5_SET_WARN_DEST) && defined(HAVE_KRB5_LOG_FACILITY)
+#define HAVE_KRB5_LOGGGING_CONTROL
+#else
+#undef HAVE_KRB5_LOGGGING_CONTROL
+#endif
+
struct smb_krb5_context {
krb5_context krb5_context;
+#ifdef HAVE_KRB5_LOGGGING_CONTROL
krb5_log_facility *logf;
+#endif
};