#include <stdio.h>
#include <stdarg.h>
-#define MODAUTHKERB_VERSION "5.0-rc7"
+#define MODAUTHKERB_VERSION "5.0"
#define MECH_NEGOTIATE "Negotiate"
#define SERVICE_NAME "HTTP"
#ifdef STANDARD20_MODULE_STUFF
#include <apr_strings.h>
#include <apr_base64.h>
-
-#define ap_null_cleanup NULL
-#define ap_register_cleanup apr_pool_cleanup_register
-
-#define ap_pstrdup apr_pstrdup
-#define ap_pstrcat apr_pstrcat
-#define ap_pcalloc apr_pcalloc
-#define ap_psprintf apr_psprintf
-
-#define ap_base64decode_len apr_base64_decode_len
-#define ap_base64decode apr_base64_decode
-#define ap_base64encode_len apr_base64_encode_len
-#define ap_base64encode apr_base64_encode
-
-#define ap_table_setn apr_table_setn
-#define ap_table_add apr_table_add
+#include <apr_compat.h>
+#include <apu_compat.h>
#else
#define ap_pstrchr_c strchr
#endif /* STANDARD20_MODULE_STUFF */
if (GSS_ERROR(major_status)) {
log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
"%s", get_gss_error(r->pool, major_status, minor_status,
- "gss_export_name() failed"));
+ "gss_display_name() failed"));
ret = HTTP_INTERNAL_SERVER_ERROR;
goto end;
}
return ret;
}
+int
+have_rcache_type(const char *type)
+{
+ krb5_error_code ret;
+ krb5_context context;
+ krb5_rcache id;
+ int found;
+
+ memset(&id, 0, sizeof(id));
+
+ ret = krb5_init_context(&context);
+ if (ret)
+ return 0;
+
+ ret = krb5_rc_resolve_type(context, id, type);
+ found = (ret == 0);
+
+ krb5_free_context(context);
+
+ return found;
+}
/***************************************************************************
Module Setup/Configuration
#ifndef HEIMDAL
/* Suppress the MIT replay cache. Requires MIT Kerberos 1.4.0 or later.
1.3.x are covered by the hack overiding the replay calls */
- if (getenv("KRB5RCACHETYPE") == NULL)
+ if (getenv("KRB5RCACHETYPE") == NULL && have_rcache_type("none"))
putenv(strdup("KRB5RCACHETYPE=none"));
#endif
}
#ifndef HEIMDAL
/* Suppress the MIT replay cache. Requires MIT Kerberos 1.4.0 or later.
1.3.x are covered by the hack overiding the replay calls */
- if (getenv("KRB5RCACHETYPE") == NULL)
+ if (getenv("KRB5RCACHETYPE") == NULL && have_rcache_type("none"))
putenv(strdup("KRB5RCACHETYPE=none"));
#endif