From 562c0b139aa2162e8880b3c979bc3dfd353bb630 Mon Sep 17 00:00:00 2001 From: Pieter Lexis Date: Fri, 29 Jul 2016 12:21:25 +0200 Subject: [PATCH] Auth: PDNSException for bad SOA MNAME or RNAME This prevents blowing up the bind backend on startup when one zone contains a bad SOA record. --- pdns/zoneparser-tng.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pdns/zoneparser-tng.cc b/pdns/zoneparser-tng.cc index d1f8bacf79..c4f4becba4 100644 --- a/pdns/zoneparser-tng.cc +++ b/pdns/zoneparser-tng.cc @@ -452,8 +452,12 @@ bool ZoneParserTNG::get(DNSResourceRecord& rr, std::string* comment) if(recparts.size() > 7) throw PDNSException("SOA record contents for "+rr.qname.toString()+" contains too many parts"); if(recparts.size() > 1) { - recparts[0]=toCanonic(d_zonename, recparts[0]).toStringRootDot(); - recparts[1]=toCanonic(d_zonename, recparts[1]).toStringRootDot(); + try { + recparts[0]=toCanonic(d_zonename, recparts[0]).toStringRootDot(); + recparts[1]=toCanonic(d_zonename, recparts[1]).toStringRootDot(); + } catch (runtime_error &re) { + throw PDNSException(re.what()); + } } rr.content.clear(); for(string::size_type n = 0; n < recparts.size(); ++n) { -- 2.47.2