]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1909] Improved Heimdal detection
authorFrancis Dupont <fdupont@isc.org>
Sat, 12 Jun 2021 18:45:13 +0000 (20:45 +0200)
committerFrancis Dupont <fdupont@isc.org>
Sun, 20 Jun 2021 09:47:27 +0000 (11:47 +0200)
m4macros/ax_gssapi.m4

index 7e38af21dde2792f5a6c916aeae6c7631a097389..b9e25506ef1608509f1c5a2c852372ad562ab152 100644 (file)
@@ -30,15 +30,19 @@ else
     else
         AC_MSG_ERROR([Unable to locate krb5-config.])
     fi
+    CXXFLAGS_SAVED="$CXXFLAGS"
+    CXXFLAGS="$CXXFLAGS $GSSAPI_CFLAGS"
 
     # Checks
-    AC_CHECK_HEADERS([gssapi/gssapi.h gssapi/gssapi_krb5.h krb5/krb5.h],,
-        AC_MSG_ERROR([Missing required gss-api or krb5 header files]))
+    AC_CHECK_HEADERS([gssapi/gssapi.h gssapi/gssapi_krb5.h],,
+        AC_MSG_ERROR([Missing required gss-api header files]))
+
+    AC_CHECK_HEADERS([krb5/krb5.h],,
+        [AC_CHECK_HEADERS([krb5.h],,
+         AC_MSG_ERROR([Missing required krb5 header files]))])
 
     # Verify that GSS-API with Kerberos 5 is usable.
-    CXXFLAGS_SAVED="$CXXFLAGS"
     LIBS_SAVED="$LIBS"
-    CXXFLAGS="$CXXFLAGS $GSSAPI_CFLAGS"
     LIBS="$LIBS $GSSAPI_LIBS"
     if test $enable_static_link = yes; then
        LIBS="-static $LIBS"
@@ -53,17 +57,24 @@ else
              major = gss_delete_sec_context(&minor, &ctx, GSS_C_NO_BUFFER);]])],
        [AC_MSG_RESULT([yes])],
        [AC_MSG_RESULT([no])
-        AC_MSG_ERROR([failed to link with  GSS-API with Kerberos 5 libraries])])
-    AC_MSG_CHECKING([checking for MIT implementation vs Heimdal])
+        AC_MSG_ERROR([failed to link with GSS-API with Kerberos 5 libraries])])
+    AC_MSG_CHECKING([checking for gss_str_to_oid availability])
     AC_COMPILE_IFELSE(
        [AC_LANG_PROGRAM(
-           [[#include <gssapi/gssapi_krb5.h>]],
-           [[return (krb5_cccol_last_change_time(0, 0, 0));]])],
-       [AC_MSG_RESULT([Heimdal])
-        AC_MSG_WARN([Heimdal is not supported, please switch to the MIT implementation])],
-       [AC_MSG_RESULT([MIT])])
+           [[#include <gssapi/gssapi.h>]],
+           [[return (gss_str_to_oid(0, 0, 0));]])],
+       [AC_MSG_RESULT([yes])
+        AC_DEFINE([HAVE_GSS_STR_TO_OID], [1], [gss_str_to_oid is available])],
+       [AC_MSG_RESULT([no])])
     CXXFLAGS="$CXXFLAGS_SAVED"
     LIBS="$LIBS_SAVED"
+    AC_MSG_CHECKING([checking for MIT implementation vs Heimdal])
+    if `${KRB5_CONFIG} --all | grep Vendor | grep -q Heimdal`; then
+        AC_MSG_RESULT([Heimdal])
+        AC_DEFINE([WITH_HEIMDAL], [1], [Heimdal GSS-API implementation])
+    else
+        AC_MSG_RESULT([MIT])
+    fi
     ENABLE_GSSAPI=yes
 fi