From: Pieter Lexis Date: Fri, 29 Jul 2016 10:21:25 +0000 (+0200) Subject: Auth: PDNSException for bad SOA MNAME or RNAME X-Git-Tag: auth-4.0.1~5^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F4255%2Fhead;p=thirdparty%2Fpdns.git 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. --- 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) {