]> granicus.if.org Git - pdns/commitdiff
add some logic to prevent us crashing on an nsec3 non-narrow zone with only 1 name...
authorBert Hubert <bert.hubert@netherlabs.nl>
Tue, 11 Jan 2011 22:50:46 +0000 (22:50 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Tue, 11 Jan 2011 22:50:46 +0000 (22:50 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1876 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/backends/bind/bindbackend2.cc

index 4bd0f4d59bfa4479a26ddba3c0bc49f5296816bf..f673586d6084fd1878b59985d0cc7466247c189a 100644 (file)
@@ -861,7 +861,12 @@ bool Bind2Backend::getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string
     records_by_hashindex_t::const_iterator iter = ttdindex.lower_bound(lqname); // lower_bound(ttdindex.begin(), ttdindex.end(), lqname);
 //    cerr<<"iter == ttdindex.begin(): "<< (iter == ttdindex.begin()) << ", ";
   //  cerr<<"iter == ttdindex.end(): "<< (iter == ttdindex.end()) << endl;
-    if(iter->nsec3hash == lqname) {
+    if(iter == ttdindex.end()) {  // zone with 1 name?
+      cerr<<"harrumf - zone with only 1 part probably"<<endl;
+      before = after = ttdindex.begin()->nsec3hash;
+      unhashed = auth; 
+    }
+    else if(iter != ttdindex.end() && iter->nsec3hash == lqname) {
       before = iter->nsec3hash;
       unhashed = dotConcat(labelReverse(iter->qname), auth);
       cerr<<"Had direct hit, setting unhashed: "<<unhashed<<endl;