]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Author: Markus Moeller <huaraz@moeller.plus.com>
authorAmos Jeffries <squid3@treenet.co.nz>
Thu, 10 Sep 2009 02:24:49 +0000 (14:24 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Thu, 10 Sep 2009 02:24:49 +0000 (14:24 +1200)
Auto-detect kerberos error_message functions

configure.in
src/peer_proxy_negotiate_auth.cc

index c8f1816f4a58800a10fe3460f6499c063af29de6..77076a9b275ed7b771e0fb309c32c4f891dfc246 100644 (file)
@@ -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 <krb5.h>
@@ -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,
index 8457a22bf87f8e69fc12851bf7df51f4ecca89e0..d1e2028c38bd2500ee8222b518901e237ce76f1a 100644 (file)
@@ -38,7 +38,9 @@ extern "C"
 #endif                         /* HAVE_PROFILE_H */
 #if HAVE_KRB5_H
 #include <krb5.h>
-#endif                         /* HAVE_KRB5_H */
+#elif HAVE_ET_COM_ERR_H
+#include <et/com_err.h>
+#endif                          /* HAVE_COM_ERR_H */
 #if HAVE_COM_ERR_H
 #include <com_err.h>
 #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