From: Daniel Stenberg Date: Fri, 10 May 2024 08:52:58 +0000 (+0200) Subject: cf-socket: don't try getting local IP without socket X-Git-Tag: curl-8_8_0~96 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d38cea94ff6d7d5269a19674b876c9f0c83782b;p=thirdparty%2Fcurl.git cf-socket: don't try getting local IP without socket In cf_tcp_connect(), it might fail and not get a socket assigned to ctx->sock but set_local_ip() is still called which would make getsockname() get invoked with a negative file desriptor and fail. By adding this check, set_local_ip() will now instead blank out the fields correctly. Spotted by CodeSonar Closes #13577 --- diff --git a/lib/cf-socket.c b/lib/cf-socket.c index eeae5f9950..63826fbc1d 100644 --- a/lib/cf-socket.c +++ b/lib/cf-socket.c @@ -923,7 +923,8 @@ static CURLcode set_local_ip(struct Curl_cfilter *cf, struct cf_socket_ctx *ctx = cf->ctx; #ifdef HAVE_GETSOCKNAME - if(!(data->conn->handler->protocol & CURLPROTO_TFTP)) { + if((ctx->sock != CURL_SOCKET_BAD) && + !(data->conn->handler->protocol & CURLPROTO_TFTP)) { /* TFTP does not connect, so it cannot get the IP like this */ char buffer[STRERROR_LEN];