BIND 10 trac2387, updated. 2045020b58739c4f1ba8c6d39ca118513f8b2e35 [2387] Keep extracting strings until end-of-input, and throw otherwise

BIND 10 source code commits bind10-changes at lists.isc.org
Mon Mar 25 10:16:04 UTC 2013


The branch, trac2387 has been updated
       via  2045020b58739c4f1ba8c6d39ca118513f8b2e35 (commit)
      from  945103ccf34fe1140877c1dda05a98eb4ee79d98 (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 2045020b58739c4f1ba8c6d39ca118513f8b2e35
Author: Mukund Sivaraman <muks at isc.org>
Date:   Mon Mar 25 15:24:36 2013 +0530

    [2387] Keep extracting strings until end-of-input, and throw otherwise

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

Summary of changes:
 src/lib/dns/rdata/generic/detail/nsec_bitmap.cc |    8 +++++++-
 src/lib/dns/rdata/generic/dnskey_48.cc          |    9 ++++++++-
 src/lib/dns/tests/rdata_dnskey_unittest.cc      |    6 ++++++
 3 files changed, 21 insertions(+), 2 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/dns/rdata/generic/detail/nsec_bitmap.cc b/src/lib/dns/rdata/generic/detail/nsec_bitmap.cc
index 5ca313c..c8a8461 100644
--- a/src/lib/dns/rdata/generic/detail/nsec_bitmap.cc
+++ b/src/lib/dns/rdata/generic/detail/nsec_bitmap.cc
@@ -87,10 +87,16 @@ buildBitmapsFromLexer(const char* const rrtype_name,
     bool have_rrtypes = false;
     while (true) {
         const MasterToken& token = lexer.getNextToken();
-        if (token.getType() != MasterToken::STRING) {
+        if ((token.getType() == MasterToken::END_OF_FILE) ||
+            (token.getType() == MasterToken::END_OF_LINE)) {
             break;
         }
 
+        if (token.getType() != MasterToken::STRING) {
+             isc_throw(InvalidRdataText,
+                       "Non-string token found when parsing key data");
+        }
+
         have_rrtypes = true;
         std::string type_str;
         try {
diff --git a/src/lib/dns/rdata/generic/dnskey_48.cc b/src/lib/dns/rdata/generic/dnskey_48.cc
index 228f984..7e2faa0 100644
--- a/src/lib/dns/rdata/generic/dnskey_48.cc
+++ b/src/lib/dns/rdata/generic/dnskey_48.cc
@@ -163,9 +163,16 @@ DNSKEY::constructFromLexer(MasterLexer& lexer) {
     std::string keydatastr;
     while (true) {
         const MasterToken& token = lexer.getNextToken();
-        if (token.getType() != MasterToken::STRING) {
+        if ((token.getType() == MasterToken::END_OF_FILE) ||
+            (token.getType() == MasterToken::END_OF_LINE)) {
             break;
         }
+
+        if (token.getType() != MasterToken::STRING) {
+             isc_throw(InvalidRdataText,
+                       "Non-string token found when parsing key data");
+        }
+
         keydatastr.append(token.getString());
     }
 
diff --git a/src/lib/dns/tests/rdata_dnskey_unittest.cc b/src/lib/dns/tests/rdata_dnskey_unittest.cc
index e511c77..6677f4c 100644
--- a/src/lib/dns/tests/rdata_dnskey_unittest.cc
+++ b/src/lib/dns/tests/rdata_dnskey_unittest.cc
@@ -52,6 +52,12 @@ string dnskey_txt("257 3 5 BEAAAAOhHQDBrhQbtphgq2wQUpEQ5t4DtUHxoMV"
 TEST_F(Rdata_DNSKEY_Test, fromText) {
     generic::DNSKEY rdata_dnskey(dnskey_txt);
     EXPECT_EQ(dnskey_txt, rdata_dnskey.toText());
+
+    // Space in key data is OK
+    EXPECT_NO_THROW(generic::DNSKEY("257 3 5 YmluZDEw LmlzYy5vcmc="));
+
+    // Delimited number in key data is OK
+    EXPECT_NO_THROW(generic::DNSKEY("257 3 5 YmluZDEwLmlzYy 5 vcmc="));
 }
 
 TEST_F(Rdata_DNSKEY_Test, assign) {



More information about the bind10-changes mailing list