SPNEGO: Fix memory leak when authentication fails

If SPNEGO fails, cleanup the negotiate handle right away.

Fixes #1115

Signed-off-by: Isaac Boukris <iboukris@gmail.com>
Reported-by: ashman-p
This commit is contained in:
Isaac Boukris 2016-11-09 15:37:34 +02:00 committed by Daniel Stenberg
parent 1299df6868
commit 46f906a1b0

View File

@ -37,6 +37,7 @@
CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy, CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
const char *header) const char *header)
{ {
CURLcode result;
struct Curl_easy *data = conn->data; struct Curl_easy *data = conn->data;
size_t len; size_t len;
@ -89,8 +90,13 @@ CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
} }
/* Initilise the security context and decode our challenge */ /* Initilise the security context and decode our challenge */
return Curl_auth_decode_spnego_message(data, userp, passwdp, service, host, result = Curl_auth_decode_spnego_message(data, userp, passwdp, service,
header, neg_ctx); host, header, neg_ctx);
if(result)
Curl_auth_spnego_cleanup(neg_ctx);
return result;
} }
CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy) CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)