]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: resolvers: Add missing case-insensitive comparisons of DNS hostnames
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 16 Mar 2021 10:21:04 +0000 (11:21 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 16 Mar 2021 10:25:04 +0000 (11:25 +0100)
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

index ee5bbac380dfe5c7c5e48db6f52fd2291e1c1b32..8935a6aa81bff922cebf847cca3536753a963215 100644 (file)
@@ -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);