- Fix the MIT / Heimdal check for good:
authorMichal Marek <mmarek@suse.cz>
Mon, 7 Apr 2008 09:26:30 +0000 (09:26 +0000)
committerMichal Marek <mmarek@suse.cz>
Mon, 7 Apr 2008 09:26:30 +0000 (09:26 +0000)
  Define HAVE_GSSMIT if <gssapi/{gssapi.h,gssapi_generic.h,gssapi_krb5.h}> are
  available, otherwise define HAVE_GSSHEIMDAL if <gssapi.h> is available.

  Only define GSS_C_NT_HOSTBASED_SERVICE to gss_nt_service_name if
  GSS_C_NT_HOSTBASED_SERVICE isn't declared by the gssapi headers. This should
  avoid breakage in case we wrongly recognize Heimdal as MIT again.

CHANGES
RELEASE-NOTES
configure.ac
lib/http_negotiate.c
lib/krb5.c

diff --git a/CHANGES b/CHANGES
index e55a993..e07fa16 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,15 @@
 
                                   Changelog
 
+Michal Marek (7 Apr 2008)
+- Fix the MIT / Heimdal check for good:
+  Define HAVE_GSSMIT if <gssapi/{gssapi.h,gssapi_generic.h,gssapi_krb5.h}> are
+  available, otherwise define HAVE_GSSHEIMDAL if <gssapi.h> is available.
+  
+  Only define GSS_C_NT_HOSTBASED_SERVICE to gss_nt_service_name if
+  GSS_C_NT_HOSTBASED_SERVICE isn't declared by the gssapi headers. This should
+  avoid breakage in case we wrongly recognize Heimdal as MIT again.
+
 Daniel Stenberg (5 Apr 2008)
 - Alexey Simak fixed curl_easy_reset() to reset the max redirect limit properly
 
index 8f4056f..85dc6e3 100644 (file)
@@ -18,6 +18,7 @@ This release includes the following bugfixes:
  o CURLOPT_NOBODY first set to TRUE and then FALSE for HTTP no longer causes
    the confusion that could lead to a hung transfer
  o curl_easy_reset() resets the max redirect limit properly
+ o configure now correctly recognizes Heimdal and MIT gssapi libraries
 
 This release includes the following known bugs:
 
@@ -34,6 +35,7 @@ New curl mirrors:
 This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
- Michal Marek, Daniel Fandrich, Scott Barrett, Alexey Simak
+ Michal Marek, Daniel Fandrich, Scott Barrett, Alexey Simak, Daniel Black,
+ Rafa Muyo
 
         Thanks! (and sorry if I forgot to mention someone)
index e0cd5bf..d9ba94d 100644 (file)
@@ -983,15 +983,14 @@ if test x"$want_gss" = xyes; then
       gnu_gss=yes
     ],
     [
-      dnl not found, check MIT
-      AC_CHECK_HEADER(gssapi/gssapi.h,
-        [
-          dnl found in the given dirs
-          AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
-        ],
-        [
-          dnl not found, check for Heimdal
-          AC_CHECK_HEADER(gssapi.h,
+      dnl not found, check Heimdal or MIT
+      AC_CHECK_HEADERS(
+        [gssapi/gssapi.h gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
+        [],
+        [not_mit=1])
+      if test "x$not_mit" = "x1"; then
+        dnl MIT not found, check for Heimdal
+        AC_CHECK_HEADER(gssapi.h,
             [
               dnl found
               AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
@@ -1002,8 +1001,30 @@ if test x"$want_gss" = xyes; then
               AC_MSG_WARN(disabling GSSAPI since no header files was found)
             ]
           )
-        ]
-      )
+      else
+        dnl MIT found
+        AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
+        dnl check if we have a really old MIT kerberos (<= 1.2)
+        AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
+        AC_TRY_COMPILE([
+#include <gssapi/gssapi.h>
+#include <gssapi/gssapi_generic.h>
+#include <gssapi/gssapi_krb5.h>
+          ],[
+            gss_import_name(
+                            (OM_uint32 *)0,
+                            (gss_buffer_t)0,
+                            GSS_C_NT_HOSTBASED_SERVICE,
+                            (gss_name_t *)0);
+          ],[
+            AC_MSG_RESULT([yes])
+          ],[
+            AC_MSG_RESULT([no])
+            AC_DEFINE(HAVE_OLD_GSSMIT, 1, [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
+          ]
+         )
+
+      fi
     ]
   )
 else
index 5baa584..f4aab7d 100644 (file)
@@ -23,7 +23,7 @@
 #include "setup.h"
 
 #ifdef HAVE_GSSAPI
-#ifdef HAVE_GSSMIT
+#ifdef HAVE_OLD_GSSMIT
 #define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
 #endif
 
index b2c04a9..2c28407 100644 (file)
@@ -36,7 +36,7 @@
 #ifndef CURL_DISABLE_FTP
 #ifdef HAVE_GSSAPI
 
-#ifdef HAVE_GSSMIT
+#ifdef HAVE_OLD_GSSMIT
 #define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
 #endif