]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[1574b] check multiple NSEC3PARAMs (not supported in this implementation)
authorJINMEI Tatuya <jinmei@isc.org>
Mon, 30 Jan 2012 22:17:54 +0000 (14:17 -0800)
committerJINMEI Tatuya <jinmei@isc.org>
Mon, 30 Jan 2012 22:17:54 +0000 (14:17 -0800)
src/lib/datasrc/memory_datasrc.cc
src/lib/datasrc/tests/memory_datasrc_unittest.cc

index 9729e8be6a89850ded20a7df803827e8d72b1634..2ace69c3bd3c68f4c3819e7c7f64f9256d0644d2 100644 (file)
@@ -230,6 +230,13 @@ struct InMemoryZoneFinder::InMemoryZoneFinderImpl {
             isc_throw(AddError, "multiple RRs of singleton type for "
                       << rrset->getName());
         }
+        // NSEC3PARAM is not a "singleton" per protocol, but this
+        // implementation doesn't request it be so at the moment.
+        if (rrset->getType() == RRType::NSEC3PARAM() &&
+            rrset->getRdataCount() > 1) {
+            isc_throw(AddError, "Multiple NSEC3PARAM RDATA is given for "
+                      << rrset->getName() << " which isn't supported");
+        }
 
         NameComparisonResult compare(origin_.compare(rrset->getName()));
         if (compare.getRelation() != NameComparisonResult::SUPERDOMAIN &&
index 81fbce726268a9d5513d5b0cf3c9c761d36176df..f9177998bba8fff1841aa2ff29d05bef971239a1 100644 (file)
@@ -1478,6 +1478,15 @@ TEST_F(InMemoryZoneFinderTest, badRRsigForNSEC3) {
                  InMemoryZoneFinder::AddError);
 }
 
+TEST_F(InMemoryZoneFinderTest, multiNSEC3PARAM) {
+    // In this current implementation multiple NSEC3PARAM isn't supported.
+    RRsetPtr nsec3param(new RRset(Name("example.org"), RRClass::IN(),
+                                  RRType::NSEC3PARAM(), RRTTL(300)));
+    nsec3param->addRdata(generic::NSEC3PARAM("1 0 12 aabbccdd"));
+    nsec3param->addRdata(generic::NSEC3PARAM("1 1 1 ddccbbaa"));
+    EXPECT_THROW(zone_finder_.add(nsec3param), InMemoryZoneFinder::AddError);
+}
+
 // TODO
 // - parameter consistency
 // - existence of NSEC3PARAM