]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2218] Insert using the NSEC3 record's entire name into the NSEC3Data tree
authorMukund Sivaraman <muks@isc.org>
Wed, 19 Sep 2012 04:30:18 +0000 (10:00 +0530)
committerMukund Sivaraman <muks@isc.org>
Wed, 19 Sep 2012 04:30:18 +0000 (10:00 +0530)
src/lib/datasrc/memory/memory_client.cc
src/lib/datasrc/memory/tests/zone_finder_unittest.cc
src/lib/datasrc/memory/zone_finder.cc

index d5c6a7a1ad74b748625fffc3a67143f2508460cb..6096e78a190c48f24db34a1cd43817c6ae0bb9e3 100644 (file)
@@ -325,12 +325,15 @@ public:
             }
         }
 
+        // Make just the NSEC3 hash label uppercase, and insert the
+        // entire name into the NSEC3Data ZoneTree.
         string fst_label = rrset->getName().split(0, 1).toText(true);
         transform(fst_label.begin(), fst_label.end(), fst_label.begin(),
                   ::toupper);
+        const string rest = rrset->getName().split(1).toText(true);
 
         ZoneNode* node;
-        nsec3_data->insertName(mem_sgmt_, Name(fst_label), &node);
+        nsec3_data->insertName(mem_sgmt_, Name(fst_label + "." + rest), &node);
 
         RdataEncoder encoder;
 
index bfdb6edab2c65a40ac0b17d0f49e00ce87dcf45f..552a85a725666dde5ba56bfe717bbca90f108fcf 100644 (file)
@@ -280,13 +280,15 @@ public:
              }
         }
 
+        // Make just the NSEC3 hash label uppercase, and insert the
+        // entire name into the NSEC3Data ZoneTree.
         string fst_label = rrset->getName().split(0, 1).toText(true);
         transform(fst_label.begin(), fst_label.end(), fst_label.begin(),
                   ::toupper);
+        const string rest = rrset->getName().split(1).toText(true);
 
         ZoneNode *node;
-        nsec3_data->insertName(mem_sgmt_, Name(fst_label), &node);
-
+        nsec3_data->insertName(mem_sgmt_, Name(fst_label + "." + rest), &node);
 
         // We assume that rrsig has already been checked to match rrset
         // by the caller.
index c608beee5542b8f0a967d10cf5d0637fd3d96a32..52b4ff6cbbdf5cbc719e1794fba51adb36b97396 100644 (file)
@@ -663,12 +663,12 @@ InMemoryZoneFinder::findNSEC3(const isc::dns::Name& name, bool recursive) {
     // the deepest label one by one, until we find a name that has a matching
     // NSEC3 hash.
     for (unsigned int labels = qlabels; labels >= olabels; --labels) {
-        const std::string hlabel =
-             (nsec3_calculate_)((labels == qlabels ?
-                                 name : name.split(qlabels - labels, labels)),
-                                nsec3_data->iterations,
-                                nsec3_data->getSaltData(),
-                                nsec3_data->getSaltLen());
+        const std::string hlabel = (nsec3_calculate_)
+            ((labels == qlabels ?
+              name : name.split(qlabels - labels, labels)),
+             nsec3_data->iterations,
+             nsec3_data->getSaltData(),
+             nsec3_data->getSaltLen());
 
         LOG_DEBUG(logger, DBG_TRACE_BASIC, DATASRC_MEM_FINDNSEC3_TRYHASH).
             arg(name).arg(labels).arg(hlabel);
@@ -678,7 +678,8 @@ InMemoryZoneFinder::findNSEC3(const isc::dns::Name& name, bool recursive) {
         ZoneNode* node(NULL);
         ZoneChain chain;
 
-        ZoneTree::Result result = tree.find(Name(hlabel), &node, chain);
+        ZoneTree::Result result =
+            tree.find(Name(hlabel + "." + getOrigin().toText()), &node, chain);
 
         if (result == ZoneTree::EXACTMATCH) {
             // We found an exact match.