From: Remi Gacogne Date: Fri, 3 Mar 2017 14:09:10 +0000 (+0100) Subject: auth: Don't leak a CDB object in case of bogus data X-Git-Tag: rec-4.1.0-alpha1~225^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F5105%2Fhead;p=thirdparty%2Fpdns.git auth: Don't leak a CDB object in case of bogus data --- diff --git a/modules/tinydnsbackend/tinydnsbackend.cc b/modules/tinydnsbackend/tinydnsbackend.cc index a20ffc441d..8b3bed9f89 100644 --- a/modules/tinydnsbackend/tinydnsbackend.cc +++ b/modules/tinydnsbackend/tinydnsbackend.cc @@ -153,7 +153,7 @@ void TinyDNSBackend::getAllDomains(vector *domains, bool include_dis d_isAxfr=true; d_dnspacket = NULL; - d_cdbReader=new CDB(getArg("dbfile")); + d_cdbReader=std::unique_ptr(new CDB(getArg("dbfile"))); d_cdbReader->searchAll(); DNSResourceRecord rr; @@ -178,7 +178,7 @@ void TinyDNSBackend::getAllDomains(vector *domains, bool include_dis bool TinyDNSBackend::list(const DNSName &target, int domain_id, bool include_disabled) { d_isAxfr=true; string key = target.toDNSString(); // FIXME400 bug: no lowercase here? or promise that from core? - d_cdbReader=new CDB(getArg("dbfile")); + d_cdbReader=std::unique_ptr(new CDB(getArg("dbfile"))); return d_cdbReader->searchSuffix(key); } @@ -199,7 +199,7 @@ void TinyDNSBackend::lookup(const QType &qtype, const DNSName &qdomain, DNSPacke d_qtype=qtype; - d_cdbReader=new CDB(getArg("dbfile")); + d_cdbReader=std::unique_ptr(new CDB(getArg("dbfile"))); d_cdbReader->searchKey(key); d_dnspacket = pkt_p; } @@ -318,7 +318,7 @@ bool TinyDNSBackend::get(DNSResourceRecord &rr) } // end of while DLOG(L< d_cdbReader; DNSPacket *d_dnspacket; // used for location and edns-client support. bool d_isWildcardQuery; // Indicate if the query received was a wildcard query. bool d_isAxfr; // Indicate if we received a list() and not a lookup().