1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 23:58:49 -05:00

Daniel Kouril's fix to make the GSS-Negotiate work fine.

This commit is contained in:
Daniel Stenberg 2003-07-23 11:28:59 +00:00
parent 1a94fee42d
commit b47462bd68

View File

@ -31,6 +31,7 @@
#include <stdarg.h> #include <stdarg.h>
#include <stdlib.h> #include <stdlib.h>
#include <ctype.h> #include <ctype.h>
#include <errno.h>
#include "urldata.h" #include "urldata.h"
#include "sendf.h" #include "sendf.h"
@ -53,18 +54,15 @@ get_gss_name(struct connectdata *conn, gss_name_t *server)
gss_buffer_desc token = GSS_C_EMPTY_BUFFER; gss_buffer_desc token = GSS_C_EMPTY_BUFFER;
char name[2048]; char name[2048];
#ifdef KRB5 /* GSSAPI implementation by Globus (known as GSI) requires the name to be
of form "<service>/<fqdn>" instead of <service>@<fqdn> (ie. slash instead
of at-sign). Also GSI servers are often identified as 'host' not 'khttp'.
Change following lines if you want to use GSI */
token.length = strlen("khttp@") + strlen(conn->hostname) + 1; token.length = strlen("khttp@") + strlen(conn->hostname) + 1;
#els
token.length = strlen("host/") + strlen(conn->hostname) + 1;
#endif
if (token.length + 1 > sizeof(name)) if (token.length + 1 > sizeof(name))
return EMSGSIZE; return EMSGSIZE;
#ifdef KRB5
sprintf(name, "khttp@%s", conn->hostname); sprintf(name, "khttp@%s", conn->hostname);
#else
sprintf(name, "host/%s", conn->hostname);
#endif
token.value = (void *) name; token.value = (void *) name;
major_status = gss_import_name(&minor_status, major_status = gss_import_name(&minor_status,
&token, &token,