[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