diff options
author | Jay Satiro <raysatiro@yahoo.com> | 2019-12-27 23:39:24 -0500 |
---|---|---|
committer | Jay Satiro <raysatiro@yahoo.com> | 2020-01-11 18:16:28 -0500 |
commit | b700662b1c77c8af7e290538f748b71d75a79ae7 (patch) | |
tree | 44a05779a834e1a21b2c1f242cc9e84758739c9a /lib | |
parent | ea6d6205d9e13ce688afed28f6a09ade49b348d3 (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.c | 3 | ||||
-rw-r--r-- | lib/strerror.c | 3 |
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; } |