diff options
-rw-r--r-- | src/resolve/resolved-dns-packet.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/resolve/resolved-dns-packet.c b/src/resolve/resolved-dns-packet.c index c587a56124..a9bd8b1398 100644 --- a/src/resolve/resolved-dns-packet.c +++ b/src/resolve/resolved-dns-packet.c @@ -1114,6 +1114,13 @@ int dns_packet_read_rr(DnsPacket *p, DnsResourceRecord **ret, size_t *start) { case DNS_TYPE_TXT: { char *s; + /* RFC 1035 says that TXT must be at least one + string. Reject empty records. */ + if (!rdlength) { + r = -EBADMSG; + goto fail; + } + while (p->rindex < offset + rdlength) { r = dns_packet_read_string(p, &s, NULL); if (r < 0) |