]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: gracefully handle trailing packet garbage 18587/head
authorLennart Poettering <lennart@poettering.net>
Tue, 10 Nov 2020 13:52:25 +0000 (14:52 +0100)
committerLennart Poettering <lennart@poettering.net>
Sun, 14 Feb 2021 22:05:38 +0000 (23:05 +0100)
Similar to the previous commit: if we see trailing garbage in a DNS
packet, let's assume EDNS is borked too, and suppress it.

src/resolve/resolved-dns-packet.c

index 953d5fa337d679f54f8154640c997cf1f793ff1f..f548bbf9f258d15d50fcd2e15c6028c9435ce00d 100644 (file)
@@ -2394,6 +2394,12 @@ int dns_packet_extract(DnsPacket *p) {
         if (r < 0)
                 return r;
 
+        if (p->rindex < p->size)  {
+                log_debug("Trailing garbage in packet, suppressing OPT.");
+                p->opt = dns_resource_record_unref(p->opt);
+                p->opt_start = p->opt_size = SIZE_MAX;
+        }
+
         p->question = TAKE_PTR(question);
         p->answer = TAKE_PTR(answer);