47 lines
1.6 KiB
Diff
47 lines
1.6 KiB
Diff
|
|
From 3572dd65bb233fc2720634804312192e3bdf4adf Mon Sep 17 00:00:00 2001
|
||
|
|
From: Daniel Stenberg <daniel@haxx.se>
|
||
|
|
Date: Thu, 25 Apr 2024 09:52:51 +0200
|
||
|
|
Subject: [PATCH] multi: avoid memory-leak risk
|
||
|
|
|
||
|
|
'newurl' is allocated in some conditions and used in a few scenarios,
|
||
|
|
but there were theoretical combinations in which it would not get freed.
|
||
|
|
Move the free to happen unconditionally. Never triggered by tests, but
|
||
|
|
spotted by Coverity.
|
||
|
|
|
||
|
|
Closes #13471
|
||
|
|
|
||
|
|
Conflict:Context adapt
|
||
|
|
Reference:https://github.com/curl/curl/commit/3572dd65bb233fc2720634804312192e3bdf4adf
|
||
|
|
---
|
||
|
|
lib/multi.c | 3 +--
|
||
|
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/lib/multi.c b/lib/multi.c
|
||
|
|
index fb98d80639f3b7..7e7590d60f8bcb 100644
|
||
|
|
--- a/lib/multi.c
|
||
|
|
+++ b/lib/multi.c
|
||
|
|
@@ -2530,7 +2530,6 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
||
|
|
multistate(data, MSTATE_CONNECT);
|
||
|
|
rc = CURLM_CALL_MULTI_PERFORM;
|
||
|
|
}
|
||
|
|
- free(newurl);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
/* after the transfer is done, go DONE */
|
||
|
|
@@ -2542,7 +2541,6 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
||
|
|
newurl = data->req.location;
|
||
|
|
data->req.location = NULL;
|
||
|
|
result = Curl_follow(data, newurl, FOLLOW_FAKE);
|
||
|
|
- free(newurl);
|
||
|
|
if(result) {
|
||
|
|
stream_error = TRUE;
|
||
|
|
result = multi_done(data, result, TRUE);
|
||
|
|
@@ -2561,6 +2559,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
||
|
|
transfers */
|
||
|
|
Curl_expire(data, 0, EXPIRE_RUN_NOW);
|
||
|
|
}
|
||
|
|
+ free(newurl);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|