]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Bind: More careful check for non-zone data.
authorPavel Boldin <boldin.pavel@gmail.com>
Sun, 12 May 2013 10:53:53 +0000 (14:53 +0400)
committerPavel Boldin <boldin.pavel@gmail.com>
Fri, 6 Sep 2013 11:36:23 +0000 (15:36 +0400)
Check if RR ends with domain name.

pdns/backends/bind/bindbackend2.cc

index a342660bad9fe481b06b254a91ce0d47b91ca681..26d5f6d57d4c1f213f2876e8c22c655d04fb0cd2 100644 (file)
@@ -418,13 +418,12 @@ void Bind2Backend::insert(shared_ptr<State> stage, int id, const string &qnameu,
 
   recordstorage_t& records=*bb2.d_records; 
 
-  bdr.qname=toLower(canonic(qnameu));
+  bdr.qname=canonic(qnameu);
+  //cerr << "qname = " << bdr.qname << ", d_name = " << bb2.d_name << endl;
   if(bb2.d_name.empty())
     ;
-  else if(bdr.qname==toLower(bb2.d_name))
-    bdr.qname.clear();
-  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 if(dottedEndsOn(bdr.qname, bb2.d_name))
+    bdr.qname.resize(max(0, bdr.qname.length() - (bb2.d_name.length() + 1)));
   else {
     string msg = "Trying to insert non-zone data, name='"+bdr.qname+"', qtype="+qtype.getName()+", zone='"+bb2.d_name+"'";
     if(ignore_non_zone) {