From a8730cf0211afa45915dc13a7bad715f4496d03e Mon Sep 17 00:00:00 2001 From: kouril Date: Mon, 16 Aug 2004 13:20:53 +0000 Subject: [PATCH] Added changes to enable compiling on Windows (most likely not sufficient) - Added standard includes - use {_vs,_s}nprintf instead of {vs,s}nprintf - added implementation of the mkstemp() call (taken from heimdal) --- src/mod_auth_kerb.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/src/mod_auth_kerb.c b/src/mod_auth_kerb.c index 35e5357..bd53600 100644 --- a/src/mod_auth_kerb.c +++ b/src/mod_auth_kerb.c @@ -46,6 +46,10 @@ #include "config.h" +#include +#include +#include + #define MODAUTHKERB_VERSION "5.0-rc6" #include @@ -86,8 +90,13 @@ #include /* gethostbyname() */ #endif /* KRB4 */ +#ifdef WIN32 +#define vsnprintf _vsnprintf +#define snprintf _snprintf +#else /* XXX remove dependency on unistd.h ??? */ #include +#endif #ifdef STANDARD20_MODULE_STUFF module AP_MODULE_DECLARE_DATA auth_kerb_module; @@ -195,6 +204,41 @@ static const command_rec kerb_auth_cmds[] = { { NULL } }; +#ifdef WIN32 +int +mkstemp(char *template) +{ + int start, i; + pid_t val; + val = getpid(); + start = strlen(template) - 1; + while(template[start] == 'X') { + template[start] = '0' + val % 10; + val /= 10; + start--; + } + + do{ + int fd; + fd = open(template, O_RDWR | O_CREAT | O_EXCL, 0600); + if(fd >= 0 || errno != EEXIST) + return fd; + i = start + 1; + do{ + if(template[i] == 0) + return -1; + template[i]++; + if(template[i] == '9' + 1) + template[i] = 'a'; + if(template[i] <= 'z') + break; + template[i] = 'a'; + i++; + }while(1); + }while(1); +} +#endif + #if defined(KRB5) && !defined(HEIMDAL) /* Needed to work around problems with replay caches */ #include "mit-internals.h" @@ -1097,7 +1141,11 @@ authenticate_user_gss(request_rec *r, kerb_auth_config *conf, int ret; gss_name_t client_name = GSS_C_NO_NAME; gss_cred_id_t delegated_cred = GSS_C_NO_CREDENTIAL; - OM_uint32 (*accept_sec_token)(); + OM_uint32 + (*accept_sec_token)(OM_uint32 *, gss_ctx_id_t *, const gss_cred_id_t, + const gss_buffer_t, const gss_channel_bindings_t, + gss_name_t *, gss_OID *, gss_buffer_t, OM_uint32 *, + OM_uint32 *, gss_cred_id_t *); gss_OID_desc spnego_oid; gss_ctx_id_t context = GSS_C_NO_CONTEXT; gss_cred_id_t server_creds = GSS_C_NO_CREDENTIAL; -- 2.1.4