]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Skip TCP dispatch responses that are not ours
authorOndřej Surý <ondrej@isc.org>
Wed, 2 Oct 2024 06:37:48 +0000 (08:37 +0200)
committerOndřej Surý <ondrej@isc.org>
Wed, 2 Oct 2024 10:45:05 +0000 (10:45 +0000)
When matching the TCP dispatch responses, we should skip the responses
that do not belong to our TCP connection.  This can happen with faulty
upstream server that sends invalid QID back to us.

(cherry picked from commit 4ef316e21ef6313fb522f6bf17576cb7a9a7b085)

lib/dns/dispatch.c

index 9a9d5d72dfae69ee6e63e6f4640f0c022e6eb7aa..81a0c0412b41d11ed63557906b6e395d452d1739 100644 (file)
@@ -694,7 +694,9 @@ tcp_recv_success(dns_dispatch_t *disp, isc_region_t *region,
 
        dns_dispentry_t *resp = cds_lfht_entry(cds_lfht_iter_get_node(&iter),
                                               dns_dispentry_t, ht_node);
-       if (resp != NULL) {
+
+       /* Skip responses that are not ours */
+       if (resp != NULL && resp->disp == disp) {
                if (!resp->reading) {
                        /*
                         * We already got a message for this QID and weren't