[svn] commit: r1100 - in /trunk/src/lib/dns/cpp: rdata/generic/nsec_47.cc tests/rdata_nsec_unittest.cc

BIND 10 source code commits bind10-changes at lists.isc.org
Wed Mar 3 22:57:21 UTC 2010


Author: jinmei
Date: Wed Mar  3 22:57:21 2010
New Revision: 1100

Log:
- added test case triggering a crash (currently commented out)
- added comments on the vulnerable part of the implementation

Modified:
    trunk/src/lib/dns/cpp/rdata/generic/nsec_47.cc
    trunk/src/lib/dns/cpp/tests/rdata_nsec_unittest.cc

Modified: trunk/src/lib/dns/cpp/rdata/generic/nsec_47.cc
==============================================================================
--- trunk/src/lib/dns/cpp/rdata/generic/nsec_47.cc (original)
+++ trunk/src/lib/dns/cpp/rdata/generic/nsec_47.cc Wed Mar  3 22:57:21 2010
@@ -98,6 +98,8 @@
     }
     rdata_len -= (buffer.getPosition() - pos);
 
+    // FIXIT: we cannot naively copy the data because the bitmaps have
+    // semantics and other part of this class assumes they are valid.
     vector<uint8_t> typebits(rdata_len);
     buffer.readData(&typebits[0], rdata_len);
 

Modified: trunk/src/lib/dns/cpp/tests/rdata_nsec_unittest.cc
==============================================================================
--- trunk/src/lib/dns/cpp/tests/rdata_nsec_unittest.cc (original)
+++ trunk/src/lib/dns/cpp/tests/rdata_nsec_unittest.cc Wed Mar  3 22:57:21 2010
@@ -58,13 +58,17 @@
 {
     const generic::NSEC rdata_nsec(nsec_txt);
     EXPECT_EQ(0, rdata_nsec.compare(
-                  *rdataFactoryFromFile(RRType("NSEC"), RRClass("IN"),
+                  *rdataFactoryFromFile(RRType::NSEC(), RRClass::IN(),
                                         "testdata/rdata_nsec_fromWire1")));
 
     // Too short RDLENGTH
-    EXPECT_THROW(rdataFactoryFromFile(RRType("NSEC"), RRClass("IN"),
+    EXPECT_THROW(rdataFactoryFromFile(RRType::NSEC(), RRClass::IN(),
                                       "testdata/rdata_nsec_fromWire2"),
                  InvalidRdataLength);
+
+    // This should be rejected
+    //rdataFactoryFromFile(RRType::NSEC(), RRClass::IN(),
+    //                   "testdata/rdata_nsec_fromWire3")->toText();
 }
 
 TEST_F(Rdata_NSEC_Test, toWireRenderer_NSEC)




More information about the bind10-changes mailing list