--- auth.c.orig 2008-03-20 20:58:16.000000000 +0000 +++ auth.c 2008-04-03 17:38:04.000000000 +0100 @@ -111,7 +111,7 @@ static char *cups_crypt(const char *pw, const char *salt); #endif /* !HAVE_LIBPAM && !HAVE_USERSEC_H */ #ifdef HAVE_GSSAPI -static gss_cred_id_t get_gss_creds(const char *service_name); +static gss_cred_id_t get_gss_creds(const char *service_name, const char *con_server_name); #endif /* HAVE_GSSAPI */ static char *get_md5_password(const char *username, const char *group, char passwd[33]); @@ -979,7 +979,7 @@ * Get the server credentials... */ - if ((server_creds = get_gss_creds(GSSServiceName)) == NULL) + if ((server_creds = get_gss_creds(GSSServiceName, con->servername)) == NULL) return; /* @@ -2438,8 +2438,9 @@ * 'get_gss_creds()' - Obtain GSS credentials. */ -static gss_cred_id_t /* O - Server credentials */ -get_gss_creds(const char *service_name) /* I - Service name */ +static gss_cred_id_t /* O - Server credentials */ +get_gss_creds(const char *service_name, /* I - Service name */ + const char *con_server_name) /* I - Hostname of server */ { OM_uint32 major_status, /* Major status code */ minor_status; /* Minor status code */ @@ -2447,12 +2448,10 @@ gss_cred_id_t server_creds; /* Server credentials */ gss_buffer_desc token = GSS_C_EMPTY_BUFFER; /* Service name token */ - char buf[1024], /* Service name buffer */ - fqdn[HTTP_MAX_URI]; /* Hostname of server */ + char buf[1024]; /* Service name buffer */ - snprintf(buf, sizeof(buf), "%s@%s", service_name, - httpGetHostname(NULL, fqdn, sizeof(fqdn))); + snprintf(buf, sizeof(buf), "%s@%s", service_name, con_server_name); token.value = buf; token.length = strlen(buf);