From 59b29257338f8e7fb6def6bddda45d08651ffe1c Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 16 Mar 2021 11:21:04 +0100 Subject: [PATCH] BUG/MINOR: resolvers: Add missing case-insensitive comparisons of DNS hostnames DNS hostname comparisons were fixed to be case-insensitive (see b17b88487 "BUG/MEDIUM: dns: Consider the fact that dns answers are case-insensitive"). However 2 comparisons are still case-sensitive. This patch must be backported as far as 1.8. --- src/server.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server.c b/src/server.c index ee5bbac380..8935a6aa81 100644 --- a/src/server.c +++ b/src/server.c @@ -3364,7 +3364,7 @@ struct server *snr_check_ip_callback(struct server *srv, void *ip, unsigned char HA_SPIN_LOCK(SERVER_LOCK, &tmpsrv->lock); if ((tmpsrv->hostname_dn == NULL) || (srv->hostname_dn_len != tmpsrv->hostname_dn_len) || - (strcmp(srv->hostname_dn, tmpsrv->hostname_dn) != 0) || + (strcasecmp(srv->hostname_dn, tmpsrv->hostname_dn) != 0) || (srv->puid == tmpsrv->puid)) { HA_SPIN_UNLOCK(SERVER_LOCK, &tmpsrv->lock); continue; @@ -3443,7 +3443,8 @@ int srv_set_fqdn(struct server *srv, const char *hostname, int resolv_locked) resolution = (srv->resolv_requester ? srv->resolv_requester->resolution : NULL); if (resolution && resolution->hostname_dn && - strcmp(resolution->hostname_dn, hostname_dn) == 0) + resolution->hostname_dn_len == hostname_dn_len && + strcasecmp(resolution->hostname_dn, hostname_dn) == 0) goto end; resolv_unlink_resolution(srv->resolv_requester, 0);