]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: dns: dns_connect_nameserver: fix fd leak at error path master
authorValentine Krasnobaeva <vkrasnobaeva@haproxy.com>
Fri, 22 Aug 2025 07:55:40 +0000 (09:55 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 22 Aug 2025 08:50:47 +0000 (10:50 +0200)
This fixes the commit 2c7e05f80e3b
("MEDIUM: dns: don't call connect to dest socket for AF_INET*"). If we fail to
bind AF_INET sockets or the address family of the nameserver protocol isn't
something, what we expect, we need to close the fd, obtained by
connect.

This fixes the issue GitHub #3085
This must be backported along with the commit 2c7e05f80e3b.

src/dns.c

index e02eb1bdc295f93b4669235cafe46d6f5258081d..ed10b5caee340268367893f2ecd7e59367dbbe0f 100644 (file)
--- a/src/dns.c
+++ b/src/dns.c
@@ -77,6 +77,7 @@ static int dns_connect_nameserver(struct dns_nameserver *ns)
                        send_log(NULL, LOG_WARNING,
                                 "DNS : section '%s': can't bind socket for nameserver '%s' on 0.0.0.0:0.\n",
                                 ns->counters->pid, ns->id);
+                       close(fd);
                        return -1;
                }
                break;
@@ -93,6 +94,7 @@ static int dns_connect_nameserver(struct dns_nameserver *ns)
                        send_log(NULL, LOG_WARNING,
                                 "DNS : section '%s': can't bind socket for nameserver '%s' on :::0.\n",
                                 ns->counters->pid, ns->id);
+                       close(fd);
                        return -1;
                }
                break;
@@ -110,6 +112,7 @@ static int dns_connect_nameserver(struct dns_nameserver *ns)
                }
                break;
        default:
+               close(fd);
                BUG_ON(1, "DNS: Unsupported address family.");
        }