diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/curl_ntlm_msgs.c | 2 | ||||
| -rw-r--r-- | lib/http_negotiate_sspi.c | 37 | 
2 files changed, 17 insertions, 22 deletions
| diff --git a/lib/curl_ntlm_msgs.c b/lib/curl_ntlm_msgs.c index 225551493..b80792632 100644 --- a/lib/curl_ntlm_msgs.c +++ b/lib/curl_ntlm_msgs.c @@ -469,9 +469,9 @@ CURLcode Curl_ntlm_create_type1_message(const char *userp,    type_1_desc.ulVersion = SECBUFFER_VERSION;    type_1_desc.cBuffers  = 1;    type_1_desc.pBuffers  = &type_1_buf; -  type_1_buf.cbBuffer   = curlx_uztoul(ntlm->max_token_length);    type_1_buf.BufferType = SECBUFFER_TOKEN;    type_1_buf.pvBuffer   = ntlm->output_token; +  type_1_buf.cbBuffer   = curlx_uztoul(ntlm->max_token_length);    /* Generate our type-1 message */    status = s_pSecFn->InitializeSecurityContext(&ntlm->handle, NULL, diff --git a/lib/http_negotiate_sspi.c b/lib/http_negotiate_sspi.c index 260c78f06..a745e9dc2 100644 --- a/lib/http_negotiate_sspi.c +++ b/lib/http_negotiate_sspi.c @@ -68,7 +68,7 @@ get_gss_name(struct connectdata *conn, bool proxy,  int Curl_input_negotiate(struct connectdata *conn, bool proxy,                           const char *header)  { -  BYTE              *input_token = 0; +  BYTE              *input_token = NULL;    SecBufferDesc     out_buff_desc;    SecBuffer         out_sec_buff;    SecBufferDesc     in_buff_desc; @@ -113,7 +113,7 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,      return -1;    } -  if(0 == strlen(neg_ctx->server_name)) { +  if(!strlen(neg_ctx->server_name)) {      ret = get_gss_name(conn, proxy, neg_ctx);      if(ret)        return ret; @@ -181,42 +181,41 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,      error = Curl_base64_decode(header,                                 (unsigned char **)&input_token,                                 &input_token_len); -    if(error || input_token_len == 0) +    if(error || !input_token_len)        return -1;    } -  /* prepare the output buffers, and input buffers if present */ -  out_buff_desc.ulVersion = 0; +  /* Setup the "output" security buffer */ +  out_buff_desc.ulVersion = SECBUFFER_VERSION;    out_buff_desc.cBuffers  = 1;    out_buff_desc.pBuffers  = &out_sec_buff; - -  out_sec_buff.cbBuffer   = curlx_uztoul(neg_ctx->max_token_length);    out_sec_buff.BufferType = SECBUFFER_TOKEN;    out_sec_buff.pvBuffer   = neg_ctx->output_token; +  out_sec_buff.cbBuffer   = curlx_uztoul(neg_ctx->max_token_length); - +  /* Setup the "input" security buffer if present */    if(input_token) { -    in_buff_desc.ulVersion = 0; +    in_buff_desc.ulVersion = SECBUFFER_VERSION;      in_buff_desc.cBuffers  = 1;      in_buff_desc.pBuffers  = &in_sec_buff; - -    in_sec_buff.cbBuffer   = curlx_uztoul(input_token_len);      in_sec_buff.BufferType = SECBUFFER_TOKEN;      in_sec_buff.pvBuffer   = input_token; +    in_sec_buff.cbBuffer   = curlx_uztoul(input_token_len);    }    sname = Curl_convert_UTF8_to_tchar(neg_ctx->server_name);    if(!sname)      return CURLE_OUT_OF_MEMORY; +  /* Generate our message */    neg_ctx->status = s_pSecFn->InitializeSecurityContext(      neg_ctx->credentials, -    input_token ? neg_ctx->context : 0, +    input_token ? neg_ctx->context : NULL,      sname,      ISC_REQ_CONFIDENTIALITY,      0,      SECURITY_NATIVE_DREP, -    input_token ? &in_buff_desc : 0, +    input_token ? &in_buff_desc : NULL,      0,      neg_ctx->context,      &out_buff_desc, @@ -259,7 +258,7 @@ CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)    if(error)      return error; -  if(len == 0) +  if(!len)      return CURLE_REMOTE_ACCESS_DENIED;    userp = aprintf("%sAuthorization: Negotiate %s\r\n", proxy ? "Proxy-" : "", @@ -282,21 +281,17 @@ static void cleanup(struct negotiatedata *neg_ctx)    if(neg_ctx->context) {      s_pSecFn->DeleteSecurityContext(neg_ctx->context);      free(neg_ctx->context); -    neg_ctx->context = 0; +    neg_ctx->context = NULL;    }    if(neg_ctx->credentials) {      s_pSecFn->FreeCredentialsHandle(neg_ctx->credentials);      free(neg_ctx->credentials); -    neg_ctx->credentials = 0; -  } - -  if(neg_ctx->output_token) { -    free(neg_ctx->output_token); -    neg_ctx->output_token = 0; +    neg_ctx->credentials = NULL;    }    neg_ctx->max_token_length = 0; +  Curl_safefree(neg_ctx->output_token);    Curl_sspi_free_identity(neg_ctx->p_identity);    neg_ctx->p_identity = NULL; | 
