From: Amos Jeffries Date: Thu, 10 Sep 2009 02:24:49 +0000 (+1200) Subject: Author: Markus Moeller X-Git-Tag: SQUID_3_2_0_1~727 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cf99ae25ec1c6ca5b2007c42ef4157f5e5686995;p=thirdparty%2Fsquid.git Author: Markus Moeller Auto-detect kerberos error_message functions --- diff --git a/configure.in b/configure.in index c8f1816f4a..77076a9b27 100644 --- a/configure.in +++ b/configure.in @@ -1833,21 +1833,21 @@ if test x"$krb5confpath" != xno; then fi fi if test "$ac_krb5_config" = "yes" ; then - ac_heimdal=`$krb5confpath --version 2>/dev/null | grep -i heimdal` - ac_solaris=`$krb5confpath --version 2>/dev/null | grep -i solaris` + ac_heimdal="`$krb5confpath --version 2>/dev/null | grep -i heimdal`" + ac_solaris="`$krb5confpath --version 2>/dev/null | grep -i solaris`" if test "x$ac_heimdal" != "x" ; then AC_DEFINE(HAVE_HEIMDAL_KERBEROS,1,[Define to 1 if you have Heimdal Kerberos]) else AC_DEFINE(HAVE_MIT_KERBEROS,1,[Define to 1 if you have MIT Kerberos]) fi if test "$ac_solaris" != "" ; then - KRB5INCS=`$krb5confpath --cflags krb5 2>/dev/null` - KRB5LIBS=`$krb5confpath --libs krb5 2>/dev/null` + KRB5INCS="`$krb5confpath --cflags krb5 2>/dev/null`" + KRB5LIBS="`$krb5confpath --libs krb5 2>/dev/null`" KRB5INCS="-I/usr/include/gssapi $KRB5INCS" KRB5LIBS="-L/usr/lib -R/usr/lib -lgss -lresolv -lsocket -lnsl $KRB5LIBS" else - KRB5INCS=`$krb5confpath --cflags krb5 2>/dev/null` - KRB5LIBS=`$krb5confpath --libs krb5 2>/dev/null` + KRB5INCS="`$krb5confpath --cflags krb5 2>/dev/null`" + KRB5LIBS="`$krb5confpath --libs krb5 2>/dev/null`" KRB5INCS="`$krb5confpath --cflags gssapi 2>/dev/null` $KRB5INCS" KRB5LIBS="`$krb5confpath --libs gssapi 2>/dev/null` $KRB5LIBS" fi @@ -1857,7 +1857,7 @@ if test "$ac_krb5_config" = "yes" ; then if test "x$ac_heimdal" == "x" ; then AC_CHECK_HEADERS(gssapi/gssapi_generic.h) fi - AC_CHECK_HEADERS(krb5.h com_err.h) + AC_CHECK_HEADERS(krb5.h com_err.h et/comm_err.h) AC_MSG_CHECKING([for max_skew in struct krb5_context]) AC_TRY_COMPILE([ #include @@ -1871,6 +1871,12 @@ AC_TRY_COMPILE([ if test "x$ac_heimdal" == "x" ; then AC_CHECK_HEADERS(profile.h) fi + AC_CHECK_LIB(com_err,error_message, + AC_DEFINE(HAVE_ERROR_MESSAGE,1,[Define to 1 if you have error_message]),) + AC_CHECK_LIB(krb5,krb5_get_err_text, + AC_DEFINE(HAVE_KRB5_GET_ERR_TEXT,1,[Define to 1 if you have krb5_get_err_text]),) + AC_CHECK_LIB(krb5,krb5_get_error_message, + AC_DEFINE(HAVE_KRB5_GET_ERROR_MESSAGE,1,[Define to 1 if you have krb5_get_error_message]),) AC_CHECK_LIB(krb5,krb5_kt_free_entry, AC_DEFINE(HAVE_KRB5_KT_FREE_ENTRY,1,[Define to 1 if you have krb5_kt_free_entry]),) AC_CHECK_LIB(krb5,krb5_get_init_creds_keytab, diff --git a/src/peer_proxy_negotiate_auth.cc b/src/peer_proxy_negotiate_auth.cc index 8457a22bf8..d1e2028c38 100644 --- a/src/peer_proxy_negotiate_auth.cc +++ b/src/peer_proxy_negotiate_auth.cc @@ -38,7 +38,9 @@ extern "C" #endif /* HAVE_PROFILE_H */ #if HAVE_KRB5_H #include -#endif /* HAVE_KRB5_H */ +#elif HAVE_ET_COM_ERR_H +#include +#endif /* HAVE_COM_ERR_H */ #if HAVE_COM_ERR_H #include #endif /* HAVE_COM_ERR_H */ @@ -62,8 +64,18 @@ extern "C" #define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE #endif -#if HAVE_HEIMDAL_KERBEROS +#if !HAVE_ERROR_MESSAGE && HAVE_KRB5_GET_ERR_TEXT #define error_message(code) krb5_get_err_text(kparam.context,code) +#elif !HAVE_ERROR_MESSAGE && HAVE_KRB5_GET_ERROR_MESSAGE +#define error_message(code) krb5_get_error_message(kparam.context,code) +#elif !HAVE_ERROR_MESSAGE +static char err_code[17]; +const char *KRB5_CALLCONV +error_message(long code) +{ + snprintf(err_code,16,"%ld",code); + return err_code; +} #endif #ifndef gss_mech_spnego