[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnurl] 17/282: multi: Change curl_multi_wait/poll to error on negative
From: |
gnunet |
Subject: |
[gnurl] 17/282: multi: Change curl_multi_wait/poll to error on negative timeout |
Date: |
Wed, 01 Apr 2020 14:28:02 +0200 |
This is an automated email from the git hooks/post-receive script.
ng0 pushed a commit to branch master
in repository gnurl.
commit b700662b1c77c8af7e290538f748b71d75a79ae7
Author: Jay Satiro <address@hidden>
AuthorDate: Fri Dec 27 23:39:24 2019 -0500
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: address@hidden
Fixes https://github.com/curl/curl/issues/4763
Closes https://github.com/curl/curl/pull/4765
---
docs/libcurl/libcurl-errors.3 | 4 +++-
docs/libcurl/symbols-in-versions | 1 +
include/curl/multi.h | 3 ++-
lib/multi.c | 3 +++
lib/strerror.c | 3 +++
packages/OS400/curl.inc.in | 4 +++-
tests/data/test1538 | 3 ++-
7 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/docs/libcurl/libcurl-errors.3 b/docs/libcurl/libcurl-errors.3
index 0305af43e..ac06f27c7 100644
--- a/docs/libcurl/libcurl-errors.3
+++ b/docs/libcurl/libcurl-errors.3
@@ -147,7 +147,7 @@ Function not found. A required zlib function was not found.
.IP "CURLE_ABORTED_BY_CALLBACK (42)"
Aborted by callback. A callback returned "abort" to libcurl.
.IP "CURLE_BAD_FUNCTION_ARGUMENT (43)"
-Internal error. A function was called with a bad parameter.
+A function was called with a bad parameter.
.IP "CURLE_INTERFACE_FAILED (45)"
Interface error. A specified outgoing interface could not be used. Set which
interface to use for outgoing connections' source IP address with
@@ -299,6 +299,8 @@ second time. (Added in 7.32.1)
An API function was called from inside a callback.
.IP "CURLM_WAKEUP_FAILURE (9)"
Wakeup is unavailable or failed.
+.IP "CURLM_BAD_FUNCTION_ARGUMENT (10)"
+A function was called with a bad parameter.
.SH "CURLSHcode"
The "share" interface will return a CURLSHcode to indicate when an error has
occurred. Also consider \fIcurl_share_strerror(3)\fP.
diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions
index b9cf71cc2..7a8078557 100644
--- a/docs/libcurl/symbols-in-versions
+++ b/docs/libcurl/symbols-in-versions
@@ -334,6 +334,7 @@ CURLMSG_DONE 7.9.6
CURLMSG_NONE 7.9.6
CURLM_ADDED_ALREADY 7.32.1
CURLM_BAD_EASY_HANDLE 7.9.6
+CURLM_BAD_FUNCTION_ARGUMENT 7.69.0
CURLM_BAD_HANDLE 7.9.6
CURLM_BAD_SOCKET 7.15.4
CURLM_CALL_MULTI_PERFORM 7.9.6
diff --git a/include/curl/multi.h b/include/curl/multi.h
index 21d8407b5..bda9bb7b8 100644
--- a/include/curl/multi.h
+++ b/include/curl/multi.h
@@ -72,7 +72,8 @@ typedef enum {
attempted to get added - again */
CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a
callback */
- CURLM_WAKEUP_FAILURE, /* wakeup is unavailable or failed */
+ CURLM_WAKEUP_FAILURE, /* wakeup is unavailable or failed */
+ CURLM_BAD_FUNCTION_ARGUMENT, /* function called with a bad parameter */
CURLM_LAST
} CURLMcode;
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;
}
diff --git a/packages/OS400/curl.inc.in b/packages/OS400/curl.inc.in
index 4e34de162..e5454daa1 100644
--- a/packages/OS400/curl.inc.in
+++ b/packages/OS400/curl.inc.in
@@ -1816,7 +1816,9 @@
d c 8
d CURLM_WAKEUP_FAILURE...
d c 9
- d CURLM_LAST c 10
+ d CURLM_BAD_FUNCTION_ARGUMENT...
+ d c 10
+ d CURLM_LAST c 11
*
d CURLMSG s 10i 0 based(######ptr######)
Enum
d CURLMSG_NONE c 0
diff --git a/tests/data/test1538 b/tests/data/test1538
index 3b22ebc27..c96983061 100644
--- a/tests/data/test1538
+++ b/tests/data/test1538
@@ -140,7 +140,8 @@ m6: Unknown option
m7: The easy handle is already added to a multi handle
m8: API function called from within callback
m9: Wakeup is unavailable or failed
-m10: Unknown error
+m10: A libcurl function was given a bad argument
+m11: Unknown error
s0: No error
s1: Unknown share option
s2: Share currently in use
--
To stop receiving notification emails like this one, please contact
address@hidden.
- [gnurl] 03/282: docs/RELEASE-PROCEDURE.md: pushed some release dates, (continued)
- [gnurl] 03/282: docs/RELEASE-PROCEDURE.md: pushed some release dates, gnunet, 2020/04/01
- [gnurl] 07/282: tool_dirhie.c: fix the copyright year range, gnunet, 2020/04/01
- [gnurl] 05/282: tool_dirhie: Allow directory traversal during creation, gnunet, 2020/04/01
- [gnurl] 04/282: KNOWN_BUGS: AUTH PLAIN for SMTP is not working on all servers, gnunet, 2020/04/01
- [gnurl] 01/282: RELEASE-PROCEDURE.md: fix next release date (Feb 26), gnunet, 2020/04/01
- [gnurl] 10/282: libtest/mk-lib1521: adapt to new public header layout, gnunet, 2020/04/01
- [gnurl] 06/282: bump: work towards 7.69.0 is started, gnunet, 2020/04/01
- [gnurl] 12/282: scripts/delta: adapt to new public header layout, gnunet, 2020/04/01
- [gnurl] 15/282: vtls: Refactor Curl_multissl_version to make the code clearer, gnunet, 2020/04/01
- [gnurl] 20/282: cmake: Improve libssh2 check on Windows, gnunet, 2020/04/01
- [gnurl] 17/282: multi: Change curl_multi_wait/poll to error on negative timeout,
gnunet <=
- [gnurl] 16/282: cmake: Enable SMB for Windows builds, gnunet, 2020/04/01
- [gnurl] 14/282: fix: Copyright year out of date, should be 2020, gnunet, 2020/04/01
- [gnurl] 18/282: ngtcp2: Add an error code for QUIC connection errors, gnunet, 2020/04/01
- [gnurl] 09/282: include: remove non-curl prefixed defines, gnunet, 2020/04/01
- [gnurl] 21/282: libssh2: add support for forcing a hostkey type, gnunet, 2020/04/01
- [gnurl] 22/282: misc: Copyright year out of date, should be 2020, gnunet, 2020/04/01
- [gnurl] 19/282: schannel: Make CURLOPT_CAINFO work better on Windows 7, gnunet, 2020/04/01
- [gnurl] 23/282: curl: remove 'config' field from OutStruct, gnunet, 2020/04/01
- [gnurl] 13/282: hostip: move code to resolve IP address literals to `Curl_resolv`, gnunet, 2020/04/01
- [gnurl] 11/282: test1167: verify global symbols in public headers are curl prefixed, gnunet, 2020/04/01