BIND 10 trac2521, updated. caefbb6f9016955ad62391d799fd69886aa363b4 [2521] DHCDID RDATA cannot be empty

BIND 10 source code commits bind10-changes at lists.isc.org
Mon May 6 18:28:07 UTC 2013


The branch, trac2521 has been updated
       via  caefbb6f9016955ad62391d799fd69886aa363b4 (commit)
      from  5045f86bbd1c7ffaf07c95f7c6ce4d64b1e1c467 (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 caefbb6f9016955ad62391d799fd69886aa363b4
Author: Paul Selkirk <pselkirk at isc.org>
Date:   Mon May 6 14:27:56 2013 -0400

    [2521] DHCDID RDATA cannot be empty

-----------------------------------------------------------------------

Summary of changes:
 src/lib/dns/rdata/in_1/dhcid_49.cc        |   11 +++++++----
 src/lib/dns/tests/rdata_dhcid_unittest.cc |   11 ++++++-----
 2 files changed, 13 insertions(+), 9 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/dns/rdata/in_1/dhcid_49.cc b/src/lib/dns/rdata/in_1/dhcid_49.cc
index f8b3b85..b6b0bf5 100644
--- a/src/lib/dns/rdata/in_1/dhcid_49.cc
+++ b/src/lib/dns/rdata/in_1/dhcid_49.cc
@@ -48,10 +48,11 @@ DHCID::constructFromLexer(MasterLexer& lexer) {
     }
     lexer.ungetToken();
 
-    // missing digest data is okay
-    if (digest_txt.size() > 0) {
-        decodeBase64(digest_txt, digest_);
+    if (digest_txt.size() == 0) {
+        isc_throw(InvalidRdataText, "Missing DHCID RDATA");
     }
+
+    decodeBase64(digest_txt, digest_);
 }
 
 /// \brief Constructor from string.
@@ -89,7 +90,9 @@ DHCID::DHCID(const std::string& dhcid_str) {
 /// The \c lexer should point to the beginning of valid textual representation
 /// of a DHCID RDATA.
 ///
-/// \throw MasterLexer::LexerError General parsing error such as missing field.
+/// \throw InvalidRdataText on empty string.
+/// \throw BadValue if the text is not valid base-64.
+/// \throw MasterLexer::LexerError General parsing error.
 ///
 /// \param lexer A \c MasterLexer object parsing a master file for the
 /// RDATA to be created
diff --git a/src/lib/dns/tests/rdata_dhcid_unittest.cc b/src/lib/dns/tests/rdata_dhcid_unittest.cc
index 8494e38..e837056 100644
--- a/src/lib/dns/tests/rdata_dhcid_unittest.cc
+++ b/src/lib/dns/tests/rdata_dhcid_unittest.cc
@@ -45,8 +45,8 @@ protected:
             rdata_str, rdata_dhcid, false, false);
     }
 
-    void checkFromText_InvalidLength(const string& rdata_str) {
-        checkFromText<in::DHCID, InvalidRdataLength, InvalidRdataLength>(
+    void checkFromText_InvalidText(const string& rdata_str) {
+        checkFromText<in::DHCID, InvalidRdataText, InvalidRdataText>(
             rdata_str, rdata_dhcid, true, true);
     }
 
@@ -74,9 +74,6 @@ protected:
 TEST_F(Rdata_DHCID_Test, fromText) {
     EXPECT_EQ(dhcid_txt, rdata_dhcid.toText());
 
-    // missing digest data is okay
-    EXPECT_NO_THROW(const in::DHCID digest(""));
-
     // Space in digest data is OK
     checkFromText_None(
             "0LIg0LvQtdGB0YMg 0YDQvtC00LjQu9Cw 0YHRjCDRkdC70L7R h9C60LA=");
@@ -95,6 +92,10 @@ TEST_F(Rdata_DHCID_Test, fromText) {
 }
 
 TEST_F(Rdata_DHCID_Test, badText) {
+    // missing digest data
+    checkFromText_InvalidText("");
+
+    // invalid base64
     checkFromText_BadValue("EEeeeeeeEEEeeeeeeGaaahAAAAAAAAHHHHHHHHHHH!=");
 
     // unterminated multi-line base64



More information about the bind10-changes mailing list