1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00

SSPI Negotiate: Fix 3 memory leaks

Curl_base64_decode allocates the output string by itself and two other
strings were not freed either.
This commit is contained in:
Marcel Raad 2014-07-24 18:55:12 +02:00 committed by Daniel Stenberg
parent 821d4a1e55
commit 9c1cf96664

View File

@ -136,10 +136,6 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
return -1; return -1;
} }
else { else {
input_token = malloc(neg_ctx->max_token_length);
if(!input_token)
return -1;
error = Curl_base64_decode(header, error = Curl_base64_decode(header,
(unsigned char **)&input_token, (unsigned char **)&input_token,
&input_token_len); &input_token_len);
@ -186,6 +182,7 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
&lifetime); &lifetime);
Curl_unicodefree(sname); Curl_unicodefree(sname);
Curl_safefree(input_token);
if(GSS_ERROR(neg_ctx->status)) if(GSS_ERROR(neg_ctx->status))
return -1; return -1;
@ -226,10 +223,14 @@ CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
userp = aprintf("%sAuthorization: Negotiate %s\r\n", proxy ? "Proxy-" : "", userp = aprintf("%sAuthorization: Negotiate %s\r\n", proxy ? "Proxy-" : "",
encoded); encoded);
if(proxy) if(proxy) {
Curl_safefree(conn->allocptr.proxyuserpwd);
conn->allocptr.proxyuserpwd = userp; conn->allocptr.proxyuserpwd = userp;
else }
else {
Curl_safefree(conn->allocptr.userpwd);
conn->allocptr.userpwd = userp; conn->allocptr.userpwd = userp;
}
free(encoded); free(encoded);
return (userp == NULL) ? CURLE_OUT_OF_MEMORY : CURLE_OK; return (userp == NULL) ? CURLE_OUT_OF_MEMORY : CURLE_OK;
} }