]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
correctly refuse out-of-zone data in bindbackend, closes #845
authorPeter van Dijk <peter.van.dijk@netherlabs.nl>
Mon, 10 Jun 2013 14:11:41 +0000 (16:11 +0200)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Mon, 10 Jun 2013 14:11:48 +0000 (16:11 +0200)
pdns/backends/bind/bindbackend2.cc

index a428f38ecca9ab483f4ddd34b999ea9659c97fc4..07e2f1c238e90c09cdfcbb2d61d6d20485e40c4f 100644 (file)
@@ -423,7 +423,7 @@ void Bind2Backend::insert(shared_ptr<State> stage, int id, const string &qnameu,
     ;
   else if(bdr.qname==toLower(bb2.d_name))
     bdr.qname.clear();
-  else if(bdr.qname.length() > bb2.d_name.length())
+  else if(bdr.qname.length() > bb2.d_name.length() && dottedEndsOn(bdr.qname, bb2.d_name))
     bdr.qname.resize(bdr.qname.length() - (bb2.d_name.length() + 1));
   else
     throw AhuException("Trying to insert non-zone data, name='"+bdr.qname+"', qtype="+qtype.getName()+", zone='"+bb2.d_name+"'");
@@ -715,7 +715,7 @@ void Bind2Backend::loadConfig(string* status)
         staging->name_id_map[i->name]=bbd->d_id; // fill out name -> id map
 
         // overwrite what we knew about the domain
-        bbd->d_name=i->name;
+        bbd->d_name=toLower(canonic(i->name));
 
         bool filenameChanged = (bbd->d_filename!=i->filename);
         bbd->d_filename=i->filename;