]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
multi: fix crash in curl_multi_wait / curl_multi_poll
authorUser Sg <sg@masterappliance-current-fb13-sg.intranet>
Tue, 13 Jul 2021 17:47:04 +0000 (17:47 +0000)
committerJay Satiro <raysatiro@yahoo.com>
Fri, 16 Jul 2021 18:17:47 +0000 (14:17 -0400)
Appears to have been caused by 51c0ebc (precedes 7.77.0) which added a
VALID_SOCK check to one of the loops through the sockets but not the
other.

Reported-by: sylgal@users.noreply.github.com
Authored-by: sylgal@users.noreply.github.com
Fixes https://github.com/curl/curl/issues/7379
Closes https://github.com/curl/curl/pull/7389

lib/multi.c

index 2a2d348b646acab5331d8629825b503367a858af..82d538d009e3cbbfe9bfebaaccabeaa0c17dd1de 100644 (file)
@@ -1180,7 +1180,7 @@ static CURLMcode multi_wait(struct Curl_multi *multi,
 #ifdef USE_WINSOCK
         long mask = 0;
 #endif
-        if(bitmap & GETSOCK_READSOCK(i)) {
+        if((bitmap & GETSOCK_READSOCK(i)) && VALID_SOCK((sockbunch[i]))) {
           s = sockbunch[i];
 #ifdef USE_WINSOCK
           mask |= FD_READ|FD_ACCEPT|FD_CLOSE;
@@ -1189,7 +1189,7 @@ static CURLMcode multi_wait(struct Curl_multi *multi,
           ufds[nfds].events = POLLIN;
           ++nfds;
         }
-        if(bitmap & GETSOCK_WRITESOCK(i)) {
+        if((bitmap & GETSOCK_WRITESOCK(i)) && VALID_SOCK((sockbunch[i]))) {
           s = sockbunch[i];
 #ifdef USE_WINSOCK
           mask |= FD_WRITE|FD_CONNECT|FD_CLOSE;