aboutsummaryrefslogtreecommitdiff
path: root/lib/curl_sasl_sspi.c
diff options
context:
space:
mode:
authorSteve Holme <steve_holme@hotmail.com>2014-08-09 17:04:10 +0100
committerSteve Holme <steve_holme@hotmail.com>2014-08-09 17:05:42 +0100
commitf187372f0a9289bcece892864175e4ec7f032b54 (patch)
treec53509cd4dc55e8b60f93507259c3811c4ff7c91 /lib/curl_sasl_sspi.c
parent1b69122810462cff569eb0929230961aa356bae0 (diff)
sasl_sspi: Fixed SPN not being converted to wchar under Unicode builds
Curl_sasl_create_digest_md5_message() would simply cast the SPN variable to a TCHAR when calling InitializeSecurityContext(). This meant that, under Unicode builds, it would not be valid wide character string. Updated to use the recently introduced Curl_sasl_build_spn() function which performs the correct conversion for us.
Diffstat (limited to 'lib/curl_sasl_sspi.c')
-rw-r--r--lib/curl_sasl_sspi.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/lib/curl_sasl_sspi.c b/lib/curl_sasl_sspi.c
index cc55b2d77..a77b503b2 100644
--- a/lib/curl_sasl_sspi.c
+++ b/lib/curl_sasl_sspi.c
@@ -116,7 +116,7 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
char **outptr, size_t *outlen)
{
CURLcode result = CURLE_OK;
- char *spn = NULL;
+ TCHAR *spn = NULL;
size_t chlglen = 0;
unsigned char *chlg = NULL;
unsigned char resp[1024];
@@ -161,8 +161,8 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
/* Release the package buffer as it is not required anymore */
s_pSecFn->FreeContextBuffer(SecurityPackage);
- /* Calculate our SPN */
- spn = aprintf("%s/%s", service, data->easy_conn->host.name);
+ /* Generate our SPN */
+ spn = Curl_sasl_build_spn(service, data->easy_conn->host.name);
if(!spn)
return CURLE_OUT_OF_MEMORY;
@@ -207,14 +207,9 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
resp_buf.cbBuffer = sizeof(resp);
/* Generate our challenge-response message */
- status = s_pSecFn->InitializeSecurityContext(&handle,
- NULL,
- (TCHAR *) spn,
- 0, 0, 0,
- &chlg_desc,
- 0, &ctx,
- &resp_desc,
- &attrs, &tsDummy);
+ status = s_pSecFn->InitializeSecurityContext(&handle, NULL, spn, 0, 0, 0,
+ &chlg_desc, 0, &ctx,
+ &resp_desc, &attrs, &tsDummy);
if(status == SEC_I_COMPLETE_AND_CONTINUE ||
status == SEC_I_CONTINUE_NEEDED)