From: User Sg Date: Tue, 13 Jul 2021 17:47:04 +0000 (+0000) Subject: multi: fix crash in curl_multi_wait / curl_multi_poll X-Git-Tag: curl-7_78_0~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a66f72829fd43664960ee2bd6789c18ddea9702;p=thirdparty%2Fcurl.git multi: fix crash in curl_multi_wait / curl_multi_poll 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 --- diff --git a/lib/multi.c b/lib/multi.c index 2a2d348b64..82d538d009 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -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;