]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: resolvers: Accept to create resolution without hostname
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 12 Sep 2025 09:52:04 +0000 (11:52 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 12 Sep 2025 09:52:06 +0000 (11:52 +0200)
A regression was introduced by commit 6cf2401ed ("BUG/MEDIUM: resolvers:
Make resolution owns its hostname_dn value"). In fact, it is possible (an
allowed ?!) to create a resolution without hostname (hostname_dn ==
NULL). It only happens on startup for a server relying on a resolver but
defined with an IP address and not a hostname

Because of the patch above, an error is triggered during the configuration
parsing when this happens, while it should be accepted.

This patch must be backported with the commit above.

src/resolvers.c

index fe705c48d5ddb63b8bbc5ce1536bef66dbb65d23..0a424cf7c95817bccd50a26bc2b30a418cba0a69 100644 (file)
@@ -1943,7 +1943,7 @@ static struct resolv_resolution *resolv_pick_resolution(struct resolvers *resolv
        struct resolv_resolution *res = NULL;
 
        if (!*hostname_dn)
-               goto err;
+               goto from_pool;
 
        /* Search for same hostname and query type in resolutions.curr */
        list_for_each_entry(res, &resolvers->resolutions.curr, list) {
@@ -1981,9 +1981,11 @@ static struct resolv_resolution *resolv_pick_resolution(struct resolvers *resolv
 
                res->prefered_query_type = query_type;
                res->query_type          = query_type;
-               res->hostname_dn         = strdup(*hostname_dn);
-               if (res->hostname_dn == NULL)
-                       goto err;
+               if (*hostname_dn) {
+                       res->hostname_dn         = strdup(*hostname_dn);
+                       if (res->hostname_dn == NULL)
+                               goto err;
+               }
                res->hostname_dn_len     = hostname_dn_len;
 
                ++resolution_uuid;