summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2019-10-27 22:20:02 +0100
committerDaniel Stenberg <daniel@haxx.se>2019-10-28 09:30:09 +0100
commitffc7526add2d9cf39892dcf01fab9e0e1f0732a8 (patch)
tree955c11ab5cbcccdc088fe03310f4dc763d25a799
parent0f234a5cdebd455f324cdf64b604b4a1340dbbfe (diff)
downloadcurl-bagder/doh-memleak.tar.gz
url: Curl_free_request_state() should also free doh handlesbagder/doh-memleak
... or risk DoH memory leaks. Reported-by: Paul Dreik Fixes #4463 Closes #4527
-rw-r--r--lib/url.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/url.c b/lib/url.c
index 660d24141..bbae273fd 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -399,9 +399,6 @@ CURLcode Curl_close(struct Curl_easy *data)
Curl_share_unlock(data, CURL_LOCK_DATA_SHARE);
}
- /* Leave no dangling DOH handles behind */
- Curl_close(data->req.doh.probe[0].easy);
- Curl_close(data->req.doh.probe[1].easy);
free(data->req.doh.probe[0].serverdoh.memory);
free(data->req.doh.probe[1].serverdoh.memory);
curl_slist_free_all(data->req.doh.headers);
@@ -1986,6 +1983,10 @@ void Curl_free_request_state(struct Curl_easy *data)
{
Curl_safefree(data->req.protop);
Curl_safefree(data->req.newurl);
+ Curl_close(data->req.doh.probe[0].easy);
+ data->req.doh.probe[0].easy = NULL;
+ Curl_close(data->req.doh.probe[1].easy);
+ data->req.doh.probe[1].easy = NULL;
}