From: JINMEI Tatuya Date: Wed, 5 Dec 2012 03:10:57 +0000 (-0800) Subject: [2442] reject empty text input; adjuted one test case accordingly X-Git-Tag: bind10-1.0.0-beta-release~39^2~3^2~1^2~2^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=435309b12de7683b06fa29d0b2b9a0bb57fbd9ef;p=thirdparty%2Fkea.git [2442] reject empty text input; adjuted one test case accordingly --- diff --git a/src/lib/dns/rdata/generic/detail/txt_like.h b/src/lib/dns/rdata/generic/detail/txt_like.h index b788dd80d3..004229ca4c 100644 --- a/src/lib/dns/rdata/generic/detail/txt_like.h +++ b/src/lib/dns/rdata/generic/detail/txt_like.h @@ -113,7 +113,14 @@ private: string_list_.push_back(std::vector()); strToCharString(token.getStringRegion(), string_list_.back()); } + + // Let upper layer handle eol/eof. lexer.ungetToken(); + + if (string_list_.empty()) { + isc_throw(InvalidRdataText, "Failed to construct" << + RRType(typeCode) << " RDATA: empty input"); + } } public: diff --git a/src/lib/dns/tests/rdata_txt_like_unittest.cc b/src/lib/dns/tests/rdata_txt_like_unittest.cc index 05c4a04eb2..b6e2676f61 100644 --- a/src/lib/dns/tests/rdata_txt_like_unittest.cc +++ b/src/lib/dns/tests/rdata_txt_like_unittest.cc @@ -199,6 +199,14 @@ TYPED_TEST(Rdata_TXT_LIKE_Test, createMultiStringsFromText) { } } +TYPED_TEST(Rdata_TXT_LIKE_Test, fromTextEmpty) { + // If the input text doesn't contain any character-string, it should be + // rejected + EXPECT_THROW(TypeParam(""), InvalidRdataText); + EXPECT_THROW(TypeParam(" "), InvalidRdataText); // even with a space + EXPECT_THROW(TypeParam("(\n)"), InvalidRdataText); // or multi-line with () +} + void makeLargest(vector& data) { uint8_t ch = 0; @@ -331,8 +339,8 @@ TYPED_TEST(Rdata_TXT_LIKE_Test, compare) { EXPECT_EQ(TypeParam(txt1).compare(TypeParam(txt1)), 0); - EXPECT_LT(TypeParam("").compare(TypeParam(txt1)), 0); - EXPECT_GT(TypeParam(txt1).compare(TypeParam("")), 0); + EXPECT_LT(TypeParam("\"\"").compare(TypeParam(txt1)), 0); + EXPECT_GT(TypeParam(txt1).compare(TypeParam("\"\"")), 0); EXPECT_LT(TypeParam(txt1).compare(TypeParam(txt2)), 0); EXPECT_GT(TypeParam(txt2).compare(TypeParam(txt1)), 0);