Browse Source

[2751] Add another minor check and adjust tests

Mukund Sivaraman 11 years ago
parent
commit
4bee63eec6

+ 3 - 0
src/lib/datasrc/memory/rdataset.cc

@@ -97,6 +97,9 @@ sanityChecks(const ConstRRsetPtr& rrset, const ConstRRsetPtr &sig_rrset,
     if (sig_rrset && sig_rrset->getRdataCount() == 0) {
         isc_throw(BadValue, "Empty SIG RRset");
     }
+    if (sig_rrset && sig_rrset->getType() != RRType::RRSIG()) {
+        isc_throw(BadValue, "SIG RRset doesn't have type RRSIG");
+    }
     if (rrset && sig_rrset && rrset->getClass() != sig_rrset->getClass()) {
         isc_throw(BadValue, "RR class doesn't match between RRset and RRSIG");
     }

+ 7 - 1
src/lib/datasrc/tests/memory/rdataset_unittest.cc

@@ -703,6 +703,9 @@ TEST_F(RdataSetTest, badParams) {
     const ConstRRsetPtr empty_rrset(new RRset(Name("www.example.com"),
                                              RRClass::IN(), RRType::A(),
                                              RRTTL(3600)));
+    const ConstRRsetPtr empty_rrsig(new RRset(Name("www.example.com"),
+                                             RRClass::IN(), RRType::RRSIG(),
+                                             RRTTL(3600)));
     const ConstRRsetPtr a_rrset = textToRRset("www.example.com. 3600 IN A "
                                               "192.0.2.1");
     const ConstRRsetPtr aaaa_rrset = textToRRset("www.example.com. 3600 IN AAAA "
@@ -722,7 +725,10 @@ TEST_F(RdataSetTest, badParams) {
     EXPECT_THROW(RdataSet::create(mem_sgmt_, encoder_, empty_rrset, sig_rrset),
                  isc::BadValue);
     // The same for rrsig
-    EXPECT_THROW(RdataSet::create(mem_sgmt_, encoder_, a_rrset, empty_rrset),
+    EXPECT_THROW(RdataSet::create(mem_sgmt_, encoder_, a_rrset, empty_rrsig),
+                 isc::BadValue);
+    // Mismatched type
+    EXPECT_THROW(RdataSet::create(mem_sgmt_, encoder_, empty_rrset, a_rrset),
                  isc::BadValue);
     // Similar for subtract
     EXPECT_THROW(RdataSet::subtract(mem_sgmt_, encoder_, empty_rrset,