From baf6a410b5bee7d45c26e9475796f1e9db201d77 Mon Sep 17 00:00:00 2001 From: Franck Bui Date: Tue, 23 Mar 2021 09:09:01 +0100 Subject: [PATCH 1/1] Revert "resolved: gracefully handle with packets with too large RR count" This reverts commit c8b7432cba73a4215538726cd98da23a8de9b426. [fbui: temporary workaround for bsc#1183745] --- src/resolve/resolved-dns-packet.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/resolve/resolved-dns-packet.c b/src/resolve/resolved-dns-packet.c index e97d9c6a12..90a40244b1 100644 --- a/src/resolve/resolved-dns-packet.c +++ b/src/resolve/resolved-dns-packet.c @@ -2210,18 +2210,6 @@ static int dns_packet_extract_answer(DnsPacket *p, DnsAnswer **ret_answer) { if (r < 0) return r; - if (p->rindex == p->size) { - /* If we reached the end of the packet already, but there are still more RRs - * declared, then that's a corrupt packet. Let's accept the packet anyway, since it's - * apparently a common bug in routers. Let's however suppress OPT support in this - * case, so that we force the rest of the logic into lowest DNS baseline support. Or - * to say this differently: if the DNS server doesn't even get the RR counts right, - * it's highly unlikely it gets EDNS right. */ - log_debug("More resource records declared in packet than included, suppressing OPT."); - bad_opt = true; - break; - } - /* Try to reduce memory usage a bit */ if (previous) dns_resource_key_reduce(&rr->key, &previous->key); @@ -2307,10 +2295,8 @@ static int dns_packet_extract_answer(DnsPacket *p, DnsAnswer **ret_answer) { previous = dns_resource_record_ref(rr); } - if (bad_opt) { + if (bad_opt) p->opt = dns_resource_record_unref(p->opt); - p->opt_start = p->opt_size = SIZE_MAX; - } *ret_answer = TAKE_PTR(answer); -- 2.26.2