[svn] commit: r1400 - in /trunk/src/lib/auth: sqlite3_datasrc.cc tests/sqlite3_unittest.cc

BIND 10 source code commits bind10-changes at lists.isc.org
Sun Mar 14 21:11:42 UTC 2010


Author: jinmei
Date: Sun Mar 14 21:11:41 2010
New Revision: 1400

Log:
reject class mismatch cases

Modified:
    trunk/src/lib/auth/sqlite3_datasrc.cc
    trunk/src/lib/auth/tests/sqlite3_unittest.cc

Modified: trunk/src/lib/auth/sqlite3_datasrc.cc
==============================================================================
--- trunk/src/lib/auth/sqlite3_datasrc.cc (original)
+++ trunk/src/lib/auth/sqlite3_datasrc.cc Sun Mar 14 21:11:41 2010
@@ -113,7 +113,7 @@
 //  ID if found.  This will always be >= 0 if found.
 //
 int
-Sqlite3DataSrc::hasExactZone(const char* name) const {
+Sqlite3DataSrc::hasExactZone(const char* const name) const {
     int rc;
 
     sqlite3_reset(dbparameters->q_zone_);
@@ -482,6 +482,9 @@
                           uint32_t& flags,
                           const Name* zonename) const
 {
+    if (qclass != getClass()) {
+        return (ERROR);
+    }
     findRecords(qname, qtype, target, zonename, NORMAL, flags);
     return (SUCCESS);
 }
@@ -494,6 +497,9 @@
                                uint32_t& flags,
                                const Name* zonename) const
 {
+    if (qclass != getClass()) {
+        return (ERROR);
+    }
     findRecords(qname, qtype, target, zonename, NORMAL, flags);
 
     // Ignore referrals in this case
@@ -515,6 +521,9 @@
                           uint32_t& flags,
                           const Name* zonename) const
 {
+    if (qclass != getClass()) {
+        return (ERROR);
+    }
     findRecords(qname, RRType::ANY(), target, zonename, ADDRESS, flags);
     return (SUCCESS);
 }
@@ -526,6 +535,9 @@
                              uint32_t& flags,
                              const Name* zonename) const
 {
+    if (qclass != getClass()) {
+            return (ERROR);
+    }
     findRecords(qname, RRType::ANY(), target, zonename, DELEGATION, flags);
     return (SUCCESS);
 }

Modified: trunk/src/lib/auth/tests/sqlite3_unittest.cc
==============================================================================
--- trunk/src/lib/auth/tests/sqlite3_unittest.cc (original)
+++ trunk/src/lib/auth/tests/sqlite3_unittest.cc Sun Mar 14 21:11:41 2010
@@ -431,6 +431,13 @@
     EXPECT_EQ(NULL, name_match.bestDataSrc());
 }
 
+TEST_F(Sqlite3DataSourceTest, findClosestClassMismatch) {
+    NameMatch name_match(www_name);
+    data_source.findClosestEnclosure(name_match, RRClass::CH());
+    EXPECT_EQ(NULL, name_match.closestName());
+    EXPECT_EQ(NULL, name_match.bestDataSrc());
+}
+
 TEST_F(Sqlite3DataSourceTest, findRRsetNormal) {
     // Without specifying the zone name, and then with the zone name
     checkFind(NORMAL, data_source, www_name, NULL, rrclass, rrtype,
@@ -445,6 +452,12 @@
                                     result_sets, find_flags, &nomatch_name));
     EXPECT_EQ(DataSrc::NO_SUCH_ZONE, find_flags);
     EXPECT_TRUE(result_sets.begin() == result_sets.end()); // should be empty
+}
+
+TEST_F(Sqlite3DataSourceTest, findRRsetClassMismatch) {
+    EXPECT_EQ(DataSrc::ERROR,
+              data_source.findRRset(www_name, RRClass::CH(), rrtype,
+                                    result_sets, find_flags, NULL));
 }
 
 TEST_F(Sqlite3DataSourceTest, findRRsetNormalANY) {
@@ -729,6 +742,13 @@
               rrttl, 0, common_a_data, &common_sig_data);
 }
 
+TEST_F(Sqlite3DataSourceTest, findExactRRsetClassMismatch) {
+    // Normal case.  No different than findRRset.
+    EXPECT_EQ(DataSrc::ERROR,
+              data_source.findExactRRset(www_name, RRClass::CH(), rrtype,
+                                         result_sets, find_flags, NULL));
+}
+
 TEST_F(Sqlite3DataSourceTest, findRRsetNSEC3) {
     // Simple NSEC3 tests (more should be added)
     string hashstr("1BB7SO0452U1QHL98UISNDD9218GELR5");
@@ -787,6 +807,12 @@
 }
 #endif
 
+TEST_F(Sqlite3DataSourceTest, findReferralRRsetClassMismatch) {
+    EXPECT_EQ(DataSrc::ERROR,
+              data_source.findReferral(www_name, RRClass::CH(), result_sets,
+                                       find_flags, NULL));
+}
+
 TEST_F(Sqlite3DataSourceTest, findReferralRRsetDNAME) {
     // same as above.  the DNAME case.
     const Name qname("dname.example.com");
@@ -835,4 +861,10 @@
     EXPECT_TRUE(result_sets.begin() == result_sets.end());
 }
 
-}
+TEST_F(Sqlite3DataSourceTest, findAddressRRsetClassMismatch) {
+    EXPECT_EQ(DataSrc::ERROR, data_source.findAddrs(www_name, RRClass::CH(),
+                                                    result_sets, find_flags,
+                                                    NULL));
+}
+
+}




More information about the bind10-changes mailing list