BIND 10 trac2218_2, updated. 25a4afa2395d6d9263b385a73cec2919c4a21830 [2218] Update message used in throw

BIND 10 source code commits bind10-changes at lists.isc.org
Mon Sep 24 07:08:15 UTC 2012


The branch, trac2218_2 has been updated
       via  25a4afa2395d6d9263b385a73cec2919c4a21830 (commit)
       via  e5f7c1b89ed635155aa022f6a14285657b152a1c (commit)
       via  e05f1d87c3764033b920fa8a227cfd05dc3ca3b8 (commit)
       via  5fe90d260706fdac0ed0678233e116213520c575 (commit)
       via  559395e392e41dd929368d820f83f58555c5e319 (commit)
      from  5f39840cf5f96ee91f826aa801d934864a55d444 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 25a4afa2395d6d9263b385a73cec2919c4a21830
Author: Mukund Sivaraman <muks at isc.org>
Date:   Mon Sep 24 12:37:55 2012 +0530

    [2218] Update message used in throw

commit e5f7c1b89ed635155aa022f6a14285657b152a1c
Author: Mukund Sivaraman <muks at isc.org>
Date:   Mon Sep 24 12:37:41 2012 +0530

    [2218] Check for zero length salts when NSEC3PARAM is processed during load

commit e05f1d87c3764033b920fa8a227cfd05dc3ca3b8
Author: Mukund Sivaraman <muks at isc.org>
Date:   Mon Sep 24 12:37:14 2012 +0530

    [2218] Call setSigned(true) when NSEC3Data is set

commit 5fe90d260706fdac0ed0678233e116213520c575
Author: Mukund Sivaraman <muks at isc.org>
Date:   Mon Sep 24 12:36:16 2012 +0530

    [2218] Process NSEC3PARAM type RRsets in test setup

commit 559395e392e41dd929368d820f83f58555c5e319
Author: Mukund Sivaraman <muks at isc.org>
Date:   Mon Sep 24 12:03:13 2012 +0530

    [2218] Add an assertion that getNSEC3Data() returns a valid object

-----------------------------------------------------------------------

Summary of changes:
 src/lib/datasrc/memory/memory_client.cc            |   10 +++++-
 .../datasrc/memory/tests/zone_finder_unittest.cc   |   38 ++++++++++++++++++++
 src/lib/datasrc/memory/zone_finder.cc              |    6 +++-
 3 files changed, 52 insertions(+), 2 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/memory/memory_client.cc b/src/lib/datasrc/memory/memory_client.cc
index f938c96..8497d99 100644
--- a/src/lib/datasrc/memory/memory_client.cc
+++ b/src/lib/datasrc/memory/memory_client.cc
@@ -310,6 +310,7 @@ public:
         if (nsec3_data == NULL) {
             nsec3_data = NSEC3Data::create(mem_sgmt_, nsec3_rdata);
             zone_data.setNSEC3Data(nsec3_data);
+            zone_data.setSigned(true);
         } else {
             size_t salt_len = nsec3_data->getSaltLen();
             const uint8_t* salt_data = nsec3_data->getSaltData();
@@ -437,6 +438,7 @@ public:
                 if (nsec3_data == NULL) {
                     nsec3_data = NSEC3Data::create(mem_sgmt_, param);
                     zone_data.setNSEC3Data(nsec3_data);
+                    zone_data.setSigned(true);
                 } else {
                     size_t salt_len = nsec3_data->getSaltLen();
                     const uint8_t* salt_data = nsec3_data->getSaltData();
@@ -444,7 +446,13 @@ public:
 
                     if ((param.getHashalg() != nsec3_data->hashalg) ||
                         (param.getIterations() != nsec3_data->iterations) ||
-                        (salt_data_2.size() != salt_len) ||
+                        (salt_data_2.size() != salt_len)) {
+                        isc_throw(AddError,
+                                  "NSEC3PARAM with inconsistent parameters: "
+                                  << last_rrset_->toText());
+                    }
+
+                    if ((salt_len > 0) &&
                         (std::memcmp(&salt_data_2[0],
                                      salt_data, salt_len) != 0)) {
                         isc_throw(AddError,
diff --git a/src/lib/datasrc/memory/tests/zone_finder_unittest.cc b/src/lib/datasrc/memory/tests/zone_finder_unittest.cc
index 20ce7d2..83c63a8 100644
--- a/src/lib/datasrc/memory/tests/zone_finder_unittest.cc
+++ b/src/lib/datasrc/memory/tests/zone_finder_unittest.cc
@@ -316,6 +316,44 @@ public:
             }
             name = name.split(1);
         }
+
+        // If we've added NSEC3PARAM at zone origin, set up NSEC3
+        // specific data or check consistency with already set up
+        // parameters.
+        if (rrset->getType() == RRType::NSEC3PARAM() &&
+            rrset->getName() == origin_) {
+            // We know rrset has exactly one RDATA
+            const generic::NSEC3PARAM& param =
+                dynamic_cast<const generic::NSEC3PARAM&>
+                 (rrset->getRdataIterator()->getCurrent());
+
+            NSEC3Data* nsec3_data = zone_data_->getNSEC3Data();
+            if (nsec3_data == NULL) {
+                nsec3_data = NSEC3Data::create(mem_sgmt_, param);
+                zone_data_->setNSEC3Data(nsec3_data);
+                zone_data_->setSigned(true);
+            } else {
+                size_t salt_len = nsec3_data->getSaltLen();
+                const uint8_t* salt_data = nsec3_data->getSaltData();
+                const vector<uint8_t>& salt_data_2 = param.getSalt();
+
+                if ((param.getHashalg() != nsec3_data->hashalg) ||
+                    (param.getIterations() != nsec3_data->iterations) ||
+                    (salt_data_2.size() != salt_len)) {
+                     isc_throw(isc::Unexpected,
+                               "NSEC3PARAM with inconsistent parameters: "
+                               << rrset->toText());
+                }
+
+                if ((salt_len > 0) &&
+                    (std::memcmp(&salt_data_2[0],
+                                 salt_data, salt_len) != 0)) {
+                     isc_throw(isc::Unexpected,
+                               "NSEC3PARAM with inconsistent parameters: "
+                               << rrset->toText());
+                }
+            }
+        }
     }
 
     // Some data to test with
diff --git a/src/lib/datasrc/memory/zone_finder.cc b/src/lib/datasrc/memory/zone_finder.cc
index 935db2b..ad886a2 100644
--- a/src/lib/datasrc/memory/zone_finder.cc
+++ b/src/lib/datasrc/memory/zone_finder.cc
@@ -620,10 +620,14 @@ InMemoryZoneFinder::findNSEC3(const isc::dns::Name& name, bool recursive) {
     }
 
     const NSEC3Data* nsec3_data = zone_data_.getNSEC3Data();
+    // This would be a programming mistake, as ZoneData::isNSEC3Signed()
+    // should check this.
+    assert(nsec3_data != NULL);
+
     const ZoneTree& tree = nsec3_data->getNSEC3Tree();
     if (tree.getNodeCount() == 0) {
         isc_throw(DataSourceError,
-                  "findNSEC3 attempt but zone has no NSEC3 RR: " <<
+                  "findNSEC3 attempt but zone has no NSEC3 RRs: " <<
                   getOrigin() << "/" << getClass());
     }
 



More information about the bind10-changes mailing list