From: Otto Moerbeek Date: Tue, 17 Sep 2019 15:05:31 +0000 (+0200) Subject: Fix out-of-bound access for zero length "serialized" string. X-Git-Tag: dnsdist-1.4.0-rc3~38^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6d02e92873648cef4222d2e500ff20832989d8fe;p=pdns Fix out-of-bound access for zero length "serialized" string. --- diff --git a/pdns/dnsparser.cc b/pdns/dnsparser.cc index 1f33aac27..0fd335edb 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;