]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Fix out-of-bound access for zero length "serialized" string. 8612/head
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Tue, 17 Sep 2019 15:05:31 +0000 (17:05 +0200)
committermind04 <mind04@monshouwer.org>
Mon, 9 Dec 2019 08:21:56 +0000 (09:21 +0100)
pdns/dnsparser.cc

index f89ff3f67a003b77c016000620c4aab5b4bcb9fb..4ff718711d6ffce323b006d038d0612eff4fbfb2 100644 (file)
@@ -114,7 +114,10 @@ shared_ptr<DNSRecordContent> 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<DNSRecordContent> ret= mdp.d_answers.begin()->first.d_content;