From e6a9192af68c5e385aa73c3e1cc51eb9f0cc09d6 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 12 Sep 2025 11:52:04 +0200 Subject: [PATCH] BUG/MEDIUM: resolvers: Accept to create resolution without hostname 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 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/resolvers.c b/src/resolvers.c index fe705c48d..0a424cf7c 100644 --- a/src/resolvers.c +++ b/src/resolvers.c @@ -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;