diff options
| author | Steve Holme <steve_holme@hotmail.com> | 2014-08-09 17:04:10 +0100 | 
|---|---|---|
| committer | Steve Holme <steve_holme@hotmail.com> | 2014-08-09 17:05:42 +0100 | 
| commit | f187372f0a9289bcece892864175e4ec7f032b54 (patch) | |
| tree | c53509cd4dc55e8b60f93507259c3811c4ff7c91 /lib/curl_sasl_sspi.c | |
| parent | 1b69122810462cff569eb0929230961aa356bae0 (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.c | 17 | 
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) | 
