From 4d38cea94ff6d7d5269a19674b876c9f0c83782b Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 10 May 2024 10:52:58 +0200 Subject: [PATCH] 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 --- lib/cf-socket.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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]; -- 2.47.3