]> granicus.if.org Git - pdns/commitdiff
Fix out-of-bound access for zero length "serialized" string.
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Tue, 17 Sep 2019 15:05:31 +0000 (17:05 +0200)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Tue, 17 Sep 2019 15:05:31 +0000 (17:05 +0200)
pdns/dnsparser.cc

index 1f33aac27af712b60064b0b9c4bd22cd18cdf457..0fd335edba431d4ddd08b8607655e0b267a5ddc3 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;