From: PowerDNS Team
Date: Fri Jan 13 09:12:00 CET 2017
Subject: Address CVE-2016-2120

Origin: upstream, https://downloads.powerdns.com/patches/2016-05/pdns-3.3.3-unknown-record-177423.patch

---
 pdns/dnsparser.cc |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/pdns/dnsparser.cc
+++ b/pdns/dnsparser.cc
@@ -58,8 +58,8 @@ public:
       throw MOADNSException("Unknown record was stored incorrectly, need 3 fields, got "+lexical_cast<string>(parts.size())+": "+tmp );
     const string& relevant=(parts.size() > 2) ? parts[2] : "";
     unsigned int total=atoi(parts[1].c_str());
-    if(relevant.size()!=2*total)
-      throw runtime_error("invalid unknown record");
+    if(relevant.size() % 2 || relevant.size() / 2 != total)
+      throw MOADNSException((boost::format("invalid unknown record length for label %s: size not equal to length field (%d != 2 * %d)") % d_dr.d_label.c_str() % relevant.size() % total).str());
     string out;
     out.reserve(total+1);
     for(unsigned int n=0; n < total; ++n) {
