From: Michal 'vorner' Vaner Date: Tue, 13 Dec 2011 13:22:09 +0000 (+0100) Subject: [1483] Protect the method by exception X-Git-Tag: perftcpdns_before_epoll~5^2~7^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7ffef24a4823b63694628ee9fdab0b196d7caa06;p=thirdparty%2Fkea.git [1483] Protect the method by exception --- diff --git a/src/lib/datasrc/database.cc b/src/lib/datasrc/database.cc index 33aa2b9eb4..7c09df8fa3 100644 --- a/src/lib/datasrc/database.cc +++ b/src/lib/datasrc/database.cc @@ -410,6 +410,9 @@ DatabaseClient::Finder::find(const isc::dns::Name& name, const isc::dns::RRType& type, const FindOptions options) { + if (type == RRType::ANY()) { + isc_throw(isc::Unexpected, "Use findAll to answer ANY"); + } return (findInternal(name, type, NULL, options)); } diff --git a/src/lib/datasrc/tests/database_unittest.cc b/src/lib/datasrc/tests/database_unittest.cc index 4f4af27340..9fc4cf35f2 100644 --- a/src/lib/datasrc/tests/database_unittest.cc +++ b/src/lib/datasrc/tests/database_unittest.cc @@ -2287,6 +2287,12 @@ TYPED_TEST(DatabaseClientTest, emptyNonterminalNSEC) { Name::ROOT_NAME(), ZoneFinder::FIND_DNSSEC)); } +TYPED_TEST(DatabaseClientTest, anyFromFind) { + // Find will reject answering an ANY query + EXPECT_THROW(this->getFinder()->find(isc::dns::Name("www2.example.org."), + RRType::ANY()), isc::Unexpected); +} + // Test the findAll method. TYPED_TEST(DatabaseClientTest, getAll) { // The domain doesn't exist, so we must get the right NSEC