From 5170495ba5b0c9561b3c752b7544816a5cb27a47 Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Tue, 17 Sep 2019 17:05:31 +0200 Subject: [PATCH] Fix out-of-bound access for zero length "serialized" string. --- pdns/dnsparser.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pdns/dnsparser.cc b/pdns/dnsparser.cc index f89ff3f67a..4ff718711d 100644 --- a/pdns/dnsparser.cc +++ b/pdns/dnsparser.cc @@ -114,7 +114,10 @@ shared_ptr DNSRecordContent::unserialize(const DNSName& qname, drh.d_clen=htons(serialized.size()); memcpy(&packet[pos], &drh, sizeof(drh)); pos+=sizeof(drh); - memcpy(&packet[pos], serialized.c_str(), serialized.size()); pos+=(uint16_t)serialized.size(); + if (serialized.size() > 0) { + memcpy(&packet[pos], serialized.c_str(), serialized.size()); + pos += (uint16_t) serialized.size(); + } MOADNSParser mdp(false, (char*)&*packet.begin(), (unsigned int)packet.size()); shared_ptr ret= mdp.d_answers.begin()->first.d_content; -- 2.47.2