aboutsummaryrefslogtreecommitdiff
path: root/lib
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
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')
-rw-r--r--lib/multi.c3
-rw-r--r--lib/strerror.c3
2 files changed, 6 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) {
diff --git a/lib/strerror.c b/lib/strerror.c
index 29df5aa55..a7b761800 100644
--- a/lib/strerror.c
+++ b/lib/strerror.c
@@ -392,6 +392,9 @@ curl_multi_strerror(CURLMcode error)
case CURLM_WAKEUP_FAILURE:
return "Wakeup is unavailable or failed";
+ case CURLM_BAD_FUNCTION_ARGUMENT:
+ return "A libcurl function was given a bad argument";
+
case CURLM_LAST:
break;
}