aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES9
-rw-r--r--RELEASE-NOTES4
-rw-r--r--configure.ac43
-rw-r--r--lib/http_negotiate.c2
-rw-r--r--lib/krb5.c2
5 files changed, 46 insertions, 14 deletions
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 <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
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 <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
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