From 8f19baf272477c1f2d5c294ad7cde83d6ff213be Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 22 Jul 2021 14:29:26 +0200 Subject: [PATCH] BUG/MINOR: resolvers: Use a null-terminated string to lookup in servers tree When we evaluate a DNS response item, it may be necessary to look for a server with a hostname matching the item target into the named servers tree. To do so, the item target is transformed to a lowercase string. It must be a null-terminated string. Thus we must explicitly set the trailing '\0' character. For a specific resolution, the named servers tree contains all servers using this resolution with a hostname loaded from a state file. Because of this bug, same entry may be duplicated because we are unable to find the right server, assigning this way the item to a free server slot. This patch should fix the issue #1333. It must be backported as far as 2.2. (cherry picked from commit 1f923391d1841435de7891682f585c040faef2bc) Signed-off-by: Christopher Faulet (cherry picked from commit c20d64256cc3c02a012709ce3bb398356fff97ad) Signed-off-by: Christopher Faulet --- src/dns.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dns.c b/src/dns.c index 947674f..2c44c50 100644 --- a/src/dns.c +++ b/src/dns.c @@ -753,6 +753,7 @@ static void dns_check_dns_response(struct dns_resolution *res) /* convert the key to lookup in lower case */ for (i = 0 ; item->target[i] ; i++) target[i] = tolower(item->target[i]); + target[i] = 0; node = ebis_lookup(&srvrq->named_servers, target); if (node) { -- 1.7.10.4