From: Remi Gacogne Date: Wed, 19 Oct 2016 16:25:42 +0000 (+0200) Subject: auth: Lowercase the qname in getDomainInfo() and isMaster() X-Git-Tag: auth-3.4.11~8^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F4590%2Fhead;p=thirdparty%2Fpdns.git auth: Lowercase the qname in getDomainInfo() and isMaster() The generic SQL and bind backends were not properly lowercasing the qname in `getDomainInfo()` and `isMaster()`. --- diff --git a/modules/bindbackend/bindbackend2.cc b/modules/bindbackend/bindbackend2.cc index 37ce754bb9..7b1c0db2e4 100644 --- a/modules/bindbackend/bindbackend2.cc +++ b/modules/bindbackend/bindbackend2.cc @@ -396,11 +396,12 @@ void Bind2Backend::getUnfreshSlaveInfos(vector *unfreshDomains) bool Bind2Backend::getDomainInfo(const string &domain, DomainInfo &di) { BB2DomainInfo bbd; - if(!safeGetBBDomainInfo(domain, &bbd)) + string domainLC(toLower(domain)); + if(!safeGetBBDomainInfo(domainLC, &bbd)) return false; di.id=bbd.d_id; - di.zone=domain; + di.zone=domainLC; di.masters=bbd.d_masters; di.last_check=bbd.d_lastcheck; di.backend=this; @@ -1225,7 +1226,7 @@ bool Bind2Backend::handle::get_list(DNSResourceRecord &r) bool Bind2Backend::isMaster(const string &name, const string &ip) { BB2DomainInfo bbd; - if(!safeGetBBDomainInfo(name, &bbd)) + if(!safeGetBBDomainInfo(toLower(name), &bbd)) return false; for(vector::const_iterator iter = bbd.d_masters.begin(); iter != bbd.d_masters.end(); ++iter) diff --git a/pdns/backends/gsql/gsqlbackend.cc b/pdns/backends/gsql/gsqlbackend.cc index f6b259ffc6..349343e184 100644 --- a/pdns/backends/gsql/gsqlbackend.cc +++ b/pdns/backends/gsql/gsqlbackend.cc @@ -74,7 +74,7 @@ void GSQLBackend::setFresh(uint32_t domain_id) bool GSQLBackend::isMaster(const string &domain, const string &ip) { - string query = (GSQLformat(d_MasterOfDomainsZoneQuery) % sqlEscape(domain)).str(); + string query = (GSQLformat(d_MasterOfDomainsZoneQuery) % sqlEscape(toLower(domain))).str(); try { d_db->doQuery(query, d_result); @@ -146,7 +146,7 @@ bool GSQLBackend::getDomainInfo(const string &domain, DomainInfo &di) id,name,master IP(s),last_check,notified_serial,type,account */ char output[1024]; snprintf(output,sizeof(output)-1,d_InfoOfDomainsZoneQuery.c_str(), - sqlEscape(domain).c_str()); + sqlEscape(toLower(domain)).c_str()); try { d_db->doQuery(output,d_result); }