From 3bda80789c88e032fc4bd72e5d775841aeb046c4 Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Mon, 18 Jul 2022 14:12:17 +0200 Subject: [PATCH] BUG/MINOR: resolvers: shut off the warning for the default resolvers When the resolv.conf file is empty or there is no resolv.conf file, an empty resolvers will be created, which emits a warning during the postparsing step. This patch fixes the problem by freeing the resolvers section if the parsing failed or if the nameserver list is empty. Must be backported in 2.6, the previous patch which introduces resolvers_destroy() is also required. --- src/resolvers.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/resolvers.c b/src/resolvers.c index ce0847931..c7267aafc 100644 --- a/src/resolvers.c +++ b/src/resolvers.c @@ -3671,13 +3671,31 @@ int resolvers_create_default() { int err_code = 0; + /* if the section already exists, do nothing */ if (find_resolvers_by_id("default")) return 0; + curr_resolvers = NULL; err_code |= resolvers_new(&curr_resolvers, "default", "", 0); - if (!(err_code & ERR_CODE)) - err_code |= parse_resolve_conf(NULL, NULL); + if (err_code & ERR_CODE) + goto err; + err_code |= parse_resolve_conf(NULL, NULL); + if (err_code & ERR_CODE) + goto err; + /* check if there was any nameserver in the resolvconf file */ + if (LIST_ISEMPTY(&curr_resolvers->nameservers)) { + err_code |= ERR_FATAL; + goto err; + } +err: + if (err_code & ERR_CODE) { + resolvers_destroy(curr_resolvers); + curr_resolvers = NULL; + } + + /* we never return an error there, we only try to create this section + * if that's possible */ return 0; }