]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
connect: remove deref of freed pointer in trace call
authorDaniel Stenberg <daniel@haxx.se>
Sat, 16 May 2026 21:59:05 +0000 (23:59 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 17 May 2026 12:20:19 +0000 (14:20 +0200)
Spotted by CodeSonar

Closes #21649

lib/connect.c

index e0f93d3c46e02d1065e36bac71583d8599dc5e65..e74bda5dfb8feadfee0d2f1807850f93e94c2179 100644 (file)
@@ -389,10 +389,13 @@ connect_sub_chain:
       cf->conn->socks_proxy.proxytype,
       cf->conn->socks_proxy.creds);
 
+    if(result) {
+      /* 'dest' might be freed now so it can't be dereferenced */
+      CURL_TRC_CF(data, cf, "added SOCKS filter failed -> %d", result);
+      return result;
+    }
     CURL_TRC_CF(data, cf, "added SOCKS filter to %s:%u -> %d",
                 dest->hostname, dest->port, result);
-    if(result)
-      return result;
     ctx->state = CF_SETUP_CNNCT_SOCKS;
     if(!cf->next || !cf->next->connected)
       goto connect_sub_chain;