diff --git a/CHANGES b/CHANGES index e55a993e5..e07fa16d1 100644 --- 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 are + available, otherwise define HAVE_GSSHEIMDAL if 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 diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 8f4056fc4..85dc6e380 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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) diff --git a/configure.ac b/configure.ac index e0cd5bfb9..d9ba94ddd 100644 --- a/configure.ac +++ b/configure.ac @@ -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 +#include +#include + ],[ + 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 diff --git a/lib/http_negotiate.c b/lib/http_negotiate.c index 5baa58426..f4aab7de4 100644 --- a/lib/http_negotiate.c +++ b/lib/http_negotiate.c @@ -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 diff --git a/lib/krb5.c b/lib/krb5.c index b2c04a9cb..2c284078e 100644 --- a/lib/krb5.c +++ b/lib/krb5.c @@ -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