From: Amos Jeffries Date: Sun, 5 Dec 2010 00:25:25 +0000 (-0700) Subject: Author: Markus Moeller X-Git-Tag: take1~37 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ffe4ffd80ad84d0f631cff728031aaef819fed37;p=thirdparty%2Fsquid.git Author: Markus Moeller Updated Kerberos header includes Better heimdal support as new heimdal version have gssapi_krb5 header files which were in the past only in older MIT releases available. To use kerberos_ldap_group on freebsd config.test has to be changed as FreeBSD installs additional packages in /usr/local. On FreeBSD 7 the krb5.h file does not work with C++. Checks for it. --- diff --git a/acinclude/krb5.m4 b/acinclude/krb5.m4 index f572b3da99..22c151de39 100644 --- a/acinclude/krb5.m4 +++ b/acinclude/krb5.m4 @@ -51,6 +51,42 @@ int i; ]) dnl SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H +AC_DEFUN([SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H], [ + AC_CACHE_CHECK([for broken Heimdal krb5.h],squid_cv_broken_heimdal_krb5_h, [ + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +int +main(void) +{ + krb5_context context; + + krb5_init_context(&context); + + return 0; +} +]])], [ squid_cv_broken_heimdal_krb5_h=no ], [ + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#if defined(__cplusplus) +extern "C" { +#endif +#include +#if defined(__cplusplus) +} +#endif +int +main(void) +{ + krb5_context context; + + krb5_init_context(&context); + + return 0; +} +]])], [ squid_cv_broken_heimdal_krb5_h=yes ], [ squid_cv_broken_heimdal_krb5_h=no ]) + ]) + ]) +]) dnl SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H + dnl check the max skew in the krb5 context, and sets squid_cv_max_skew_context AC_DEFUN([SQUID_CHECK_MAX_SKEW_IN_KRB5_CONTEXT],[ AC_CACHE_CHECK([for max_skew in struct krb5_context], @@ -195,7 +231,13 @@ AC_DEFUN([SQUID_CHECK_WORKING_KRB5],[ KRB5INT_BEGIN_DECLS #endif #endif +#if HAVE_BROKEN_HEIMDAL_KRB5_H +extern "C" { #include +} +#else +#include +#endif #endif int diff --git a/configure.in b/configure.in index d557f397b0..7b8f10bdd5 100644 --- a/configure.in +++ b/configure.in @@ -776,7 +776,7 @@ AC_ARG_ENABLE(delay-pools, [ if test "x$enableval" = "xyes" ; then AC_MSG_NOTICE([Delay pools enabled]) AC_DEFINE([USE_DELAY_POOLS],1,[Traffic management via "delay pools".]) - AM_CONDITIONAL(ENABLE_DELAY_POOLS, true,) + AM_CONDITIONAL(ENABLE_DELAY_POOLS, true) fi ]) @@ -1835,12 +1835,16 @@ if test "x$ac_krb5_config" = "xyes" ; then SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H if test "x$squid_cv_broken_krb5_h" = "xyes"; then - AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if krb5.h is broken for C++]) + AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if Solaris krb5.h is broken for C++]) AC_MSG_WARN([You have a broken Solaris system include.]) AC_MSG_WARN([Please see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512]) AC_MSG_WARN([If you need Kerberos support you'll have to patch]) AC_MSG_WARN([your system. See contrib/solaris/solaris-krb5-include.patch]) fi + SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H + if test "x$squid_cv_broken_heimdal_krb5_h" = "xyes"; then + AC_DEFINE(HAVE_BROKEN_HEIMDAL_KRB5_H, 1, [Define to 1 if Heimdal krb5.h is broken for C++]) + fi AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h) ac_com_error_message=no diff --git a/helpers/external_acl/kerberos_ldap_group/config.test b/helpers/external_acl/kerberos_ldap_group/config.test index 4c1c762e9f..88528172f6 100644 --- a/helpers/external_acl/kerberos_ldap_group/config.test +++ b/helpers/external_acl/kerberos_ldap_group/config.test @@ -2,13 +2,16 @@ # Don't build without gssapi.h if [ -f /usr/include/ldap.h -o -f /usr/local/include/ldap.h ]; then # Won't link without SASL as well - if [ -f /usr/include/sasl.h -o -f /usr/include/sasl/sasl.h ]; then + if [ -f /usr/include/sasl.h -o -f /usr/include/sasl/sasl.h -o -f /usr/local/include/sasl.h -o -f /usr/local/include/sasl/sasl.h ]; then if [ -f /usr/lib/libsasl.a -o -f /usr/lib/libsasl2.a ]; then exit 0 fi if [ -f /usr/lib/libsasl.la -o -f /usr/lib/libsasl2.la ]; then exit 0 fi + if [ -f /usr/local/lib/libsasl.so -o -f /usr/local/lib/libsasl2.so ]; then + exit 0 + fi fi fi exit 1 diff --git a/helpers/external_acl/kerberos_ldap_group/support.h b/helpers/external_acl/kerberos_ldap_group/support.h index 996b752526..46b141676a 100644 --- a/helpers/external_acl/kerberos_ldap_group/support.h +++ b/helpers/external_acl/kerberos_ldap_group/support.h @@ -28,53 +28,49 @@ #include #endif -#if HAVE_HEIMDAL_KERBEROS #if HAVE_GSSAPI_GSSAPI_H #include #elif HAVE_GSSAPI_H #include #endif /* HAVE_GSSAPI_GSSAPI_H/HAVE_GSSAPI_H */ -#if HAVE_KRB5_H -#if HAVE_BROKEN_SOLARIS_KRB5_H -#warn "Warning! You have a broken Solaris fsystem header" -#warn "http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512" -#endif /* HAVE_BROKEN_SOLARIS_KRB5_H */ -#include -#endif /* HAVE_KRB5_H */ -#if HAVE_COM_ERR_H -#include -#else -#define error_message(code) krb5_get_err_text(kparam.context,code) -#endif /* HAVE_COM_ERR_H */ -#else /*MIT */ -#ifdef HAVE_GSSAPI_GSSAPI_H -#include -#elif defined(HAVE_GSSAPI_H) -#include -#endif -#ifdef HAVE_GSSAPI_GSSAPI_KRB5_H + +#if !HAVE_HEIMDAL_KERBEROS +#if HAVE_GSSAPI_GSSAPI_KRB5_H #include #endif -#ifdef HAVE_GSSAPI_GSSAPI_GENERIC_H +#if HAVE_GSSAPI_GSSAPI_GENERIC_H #include #endif -#ifdef HAVE_GSSAPI_GSSAPI_EXT_H +#if HAVE_GSSAPI_GSSAPI_EXT_H #include #endif -#ifdef HAVE_KRB5_H +#endif + +#if HAVE_KRB5_H #if HAVE_BROKEN_SOLARIS_KRB5_H +#warn "Warning! You have a broken Solaris system header" +#warn "http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512" #if defined(__cplusplus) #define KRB5INT_BEGIN_DECLS extern "C" { #define KRB5INT_END_DECLS KRB5INT_BEGIN_DECLS #endif -#endif +#endif /* HAVE_BROKEN_SOLARIS_KRB5_H */ +#if HAVE_BROKEN_HEIMDAL_KRB5_H +extern "C" { +#include +} +#else #include #endif -#ifdef HAVE_COM_ERR_H +#endif /* HAVE_KRB5_H */ + +#if HAVE_COM_ERR_H #include -#endif -#endif +#elif HAVE_HEIMDAL_KERBEROS +#define error_message(code) krb5_get_err_text(kparam.context,code) +#endif /* HAVE_COM_ERR_H */ + #ifndef gss_nt_service_name #define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE #endif