BIND 10 trac2521, updated. d24f908722f73071dd220b3457123d3e9dd2deae [2521] remove erroneous whitespace in RRCollator test data
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri Apr 26 19:33:35 UTC 2013
The branch, trac2521 has been updated
via d24f908722f73071dd220b3457123d3e9dd2deae (commit)
via 6b983412d569f2e7e81f6e6bebe37720f146d9b2 (commit)
from f3ca4f39256d94a48ed38f886b70d8195f89c83d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit d24f908722f73071dd220b3457123d3e9dd2deae
Author: Paul Selkirk <pselkirk at isc.org>
Date: Fri Apr 26 15:31:46 2013 -0400
[2521] remove erroneous whitespace in RRCollator test data
commit 6b983412d569f2e7e81f6e6bebe37720f146d9b2
Author: Paul Selkirk <pselkirk at isc.org>
Date: Fri Apr 26 15:29:08 2013 -0400
[2521] more DHCID unit tests
-----------------------------------------------------------------------
Summary of changes:
src/lib/dns/rdata/in_1/dhcid_49.cc | 11 ++--
src/lib/dns/tests/rdata_dhcid_unittest.cc | 84 ++++++++++++++++++-----------
src/lib/dns/tests/rrcollator_unittest.cc | 4 +-
3 files changed, 61 insertions(+), 38 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/dns/rdata/in_1/dhcid_49.cc b/src/lib/dns/rdata/in_1/dhcid_49.cc
index fee90b1..a857f4b 100644
--- a/src/lib/dns/rdata/in_1/dhcid_49.cc
+++ b/src/lib/dns/rdata/in_1/dhcid_49.cc
@@ -74,12 +74,13 @@ DHCID::DHCID(const std::string& dhcid_str) {
std::istringstream iss(dhcid_str);
MasterLexer lexer;
lexer.pushSource(iss);
+
createFromLexer(lexer);
- // RFC4701 says we have to support white-space-separated substrings,
- // so we have to read to the end of input. Therefore, we can't detect
- // extra input past the end of the digest. OTOH, extra text is likely
- // to result in a base64 decoding error, so BadValue will be thrown in
- // that case.
+
+ if (lexer.getNextToken().getType() != MasterToken::END_OF_FILE) {
+ isc_throw(InvalidRdataText, "extra input text for DHCID: "
+ << dhcid_str);
+ }
} catch (const MasterLexer::LexerError& ex) {
isc_throw(InvalidRdataText, "Failed to construct DHCID from '" <<
dhcid_str << "': " << ex.what());
diff --git a/src/lib/dns/tests/rdata_dhcid_unittest.cc b/src/lib/dns/tests/rdata_dhcid_unittest.cc
index 2f2d38c..4158afc 100644
--- a/src/lib/dns/tests/rdata_dhcid_unittest.cc
+++ b/src/lib/dns/tests/rdata_dhcid_unittest.cc
@@ -12,6 +12,8 @@
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
+#include <exceptions/exceptions.h>
+
#include <util/buffer.h>
#include <dns/rdataclass.h>
#include <util/encode/base64.h>
@@ -23,6 +25,7 @@
using isc::UnitTestUtil;
using namespace std;
+using namespace isc;
using namespace isc::dns;
using namespace isc::util;
using namespace isc::util::encode;
@@ -30,43 +33,62 @@ using namespace isc::dns::rdata;
namespace {
-const string string_dhcid(
- "0LIg0LvQtdGB0YMg0YDQvtC00LjQu9Cw0YHRjCDRkdC70L7Rh9C60LA=");
-
-const in::DHCID rdata_dhcid(string_dhcid);
-
class Rdata_DHCID_Test : public RdataTest {
+protected:
+ Rdata_DHCID_Test() :
+ dhcid_txt("0LIg0LvQtdGB0YMg0YDQvtC00LjQu9Cw0YHRjCDRkdC70L7Rh9C60LA="),
+ rdata_dhcid(dhcid_txt)
+ {}
+
+ void checkFromText_None(const string& rdata_str) {
+ checkFromText<in::DHCID, isc::Exception, isc::Exception>(
+ rdata_str, rdata_dhcid, false, false);
+ }
+
+ void checkFromText_InvalidLength(const string& rdata_str) {
+ checkFromText<in::DHCID, InvalidRdataLength, InvalidRdataLength>(
+ rdata_str, rdata_dhcid, true, true);
+ }
+
+ void checkFromText_BadValue(const string& rdata_str) {
+ checkFromText<in::DHCID, BadValue, BadValue>(
+ rdata_str, rdata_dhcid, true, true);
+ }
+
+ void checkFromText_BadString(const string& rdata_str) {
+ checkFromText
+ <in::DHCID, InvalidRdataText, isc::Exception>(
+ rdata_str, rdata_dhcid, true, false);
+ }
+
+ const string dhcid_txt;
+ const in::DHCID rdata_dhcid;
};
-TEST_F(Rdata_DHCID_Test, createFromString) {
- const in::DHCID rdata_dhcid2(string_dhcid);
- EXPECT_EQ(0, rdata_dhcid2.compare(rdata_dhcid));
-}
+TEST_F(Rdata_DHCID_Test, fromText) {
+ EXPECT_EQ(dhcid_txt, rdata_dhcid.toText());
-TEST_F(Rdata_DHCID_Test, spaceSeparatedBase64) {
- const in::DHCID rdata_dhcid2(
+ // Space in digest data is OK
+ checkFromText_None(
"0LIg0LvQtdGB0YMg 0YDQvtC00LjQu9Cw 0YHRjCDRkdC70L7R h9C60LA=");
- EXPECT_EQ(0, rdata_dhcid2.compare(rdata_dhcid));
-}
-TEST_F(Rdata_DHCID_Test, multiLineBase64) {
- const in::DHCID rdata_dhcid2(
+ // Multi-line digest data is OK, if enclosed in parentheses
+ checkFromText_None(
"( 0LIg0LvQtdGB0YMg0YDQvtC00LjQu9Cw\n0YHRjCDRkdC70L7R h9C60LA= )");
- EXPECT_EQ(0, rdata_dhcid2.compare(rdata_dhcid));
-}
-
-TEST_F(Rdata_DHCID_Test, extraText) {
- EXPECT_THROW(const in::DHCID rdata_dhcid2(
- "0LIg0LvQtdGB0YMg 0YDQvtC00LjQu9Cw 0YHRjCDRkdC70L7R h9C60LA="
- " superextrabogustext"), isc::BadValue);
-}
-TEST_F(Rdata_DHCID_Test, badBase64) {
- EXPECT_THROW(const in::DHCID rdata_dhcid_bad("00"), isc::BadValue);
+ // Trailing garbage. This should cause only the string constructor
+ // to fail, but the lexer constructor must be able to continue
+ // parsing from it.
+ checkFromText_BadString(
+ "0LIg0LvQtdGB0YMg0YDQvtC00LjQu9Cw0YHRjCDRkdC70L7Rh9C60LA="
+ " ; comment\n"
+ "AAIBY2/AuCccgoJbsaxcQc9TUapptP69lOjxfNuVAA2kjEA=");
}
-TEST_F(Rdata_DHCID_Test, badLength) {
- EXPECT_THROW(const in::DHCID rdata_dhcid_bad("MDA="), InvalidRdataLength);
+TEST_F(Rdata_DHCID_Test, badText) {
+ checkFromText_BadValue("00");
+ checkFromText_InvalidLength("MDA=");
+ checkFromText_BadValue("EEeeeeeeEEEeeeeeeGaaahAAAAAAAAHHHHHHHHHHH!=");
}
TEST_F(Rdata_DHCID_Test, copy) {
@@ -84,7 +106,7 @@ TEST_F(Rdata_DHCID_Test, createFromWire) {
TEST_F(Rdata_DHCID_Test, createFromLexer) {
EXPECT_EQ(0, rdata_dhcid.compare(
*test::createRdataUsingLexer(RRType::DHCID(), RRClass::IN(),
- string_dhcid)));
+ dhcid_txt)));
// Exceptions cause NULL to be returned.
EXPECT_FALSE(test::createRdataUsingLexer(RRType::DHCID(), RRClass::IN(),
@@ -110,13 +132,13 @@ TEST_F(Rdata_DHCID_Test, toWireBuffer) {
}
TEST_F(Rdata_DHCID_Test, toText) {
- EXPECT_EQ(string_dhcid, rdata_dhcid.toText());
+ EXPECT_EQ(dhcid_txt, rdata_dhcid.toText());
}
TEST_F(Rdata_DHCID_Test, getDHCIDDigest) {
- const string string_dhcid1(encodeBase64(rdata_dhcid.getDigest()));
+ const string dhcid_txt1(encodeBase64(rdata_dhcid.getDigest()));
- EXPECT_EQ(string_dhcid, string_dhcid1);
+ EXPECT_EQ(dhcid_txt, dhcid_txt1);
}
TEST_F(Rdata_DHCID_Test, compare) {
diff --git a/src/lib/dns/tests/rrcollator_unittest.cc b/src/lib/dns/tests/rrcollator_unittest.cc
index f59c77c..9123dc5 100644
--- a/src/lib/dns/tests/rrcollator_unittest.cc
+++ b/src/lib/dns/tests/rrcollator_unittest.cc
@@ -59,10 +59,10 @@ protected:
txt_rdata_(createRdata(RRType::TXT(), rrclass_, "test")),
sig_rdata1_(createRdata(RRType::RRSIG(), rrclass_,
"A 5 3 3600 20000101000000 20000201000000 "
- "12345 example.com. FAKE ")),
+ "12345 example.com. FAKE")),
sig_rdata2_(createRdata(RRType::RRSIG(), rrclass_,
"NS 5 3 3600 20000101000000 20000201000000 "
- "12345 example.com. FAKE "))
+ "12345 example.com. FAKE"))
{}
void checkRRset(const Name& expected_name, const RRClass& expected_class,
More information about the bind10-changes
mailing list