aboutsummaryrefslogtreecommitdiff
path: root/lib/multi.c
diff options
context:
space:
mode:
authorJay Satiro <raysatiro@yahoo.com>2019-12-27 23:39:24 -0500
committerJay Satiro <raysatiro@yahoo.com>2020-01-11 18:16:28 -0500
commitb700662b1c77c8af7e290538f748b71d75a79ae7 (patch)
tree44a05779a834e1a21b2c1f242cc9e84758739c9a /lib/multi.c
parentea6d6205d9e13ce688afed28f6a09ade49b348d3 (diff)
multi: Change curl_multi_wait/poll to error on negative timeout
- Add new error CURLM_BAD_FUNCTION_ARGUMENT and return that error when curl_multi_wait/poll is passed timeout param < 0. Prior to this change passing a negative value to curl_multi_wait/poll such as -1 could cause the function to wait forever. Reported-by: hamstergene@users.noreply.github.com Fixes https://github.com/curl/curl/issues/4763 Closes https://github.com/curl/curl/pull/4765
Diffstat (limited to 'lib/multi.c')
-rw-r--r--lib/multi.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/multi.c b/lib/multi.c
index 6d819b4aa..31275ca2b 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -1048,6 +1048,9 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi,
if(multi->in_callback)
return CURLM_RECURSIVE_API_CALL;
+ if(timeout_ms < 0)
+ return CURLM_BAD_FUNCTION_ARGUMENT;
+
/* Count up how many fds we have from the multi handle */
data = multi->easyp;
while(data) {