Browse Source

[2786] Implemented unpack() function of OptionString class.

Marcin Siodelski 12 years ago
parent
commit
e62bdea81b
2 changed files with 8 additions and 3 deletions
  1. 7 2
      src/lib/dhcp/option_string.cc
  2. 1 1
      src/lib/dhcp/tests/option_string_unittest.cc

+ 7 - 2
src/lib/dhcp/option_string.cc

@@ -56,8 +56,13 @@ OptionString::pack(isc::util::OutputBuffer& buf) {
 }
 
 void
-OptionString::unpack(OptionBufferConstIter/* begin */,
-                     OptionBufferConstIter/* end*/) {
+OptionString::unpack(OptionBufferConstIter begin,
+                     OptionBufferConstIter end) {
+    if (std::distance(begin, end) == 0) {
+        isc_throw(isc::OutOfRange, "failed to parse an option holding string value"
+                  << " - empty value is not accepted");
+    }
+    value_.assign(begin, end);
 }
 
 } // end of isc::dhcp namespace

+ 1 - 1
src/lib/dhcp/tests/option_string_unittest.cc

@@ -105,7 +105,7 @@ TEST_F(OptionStringTest, constructorFromBuffer) {
     const std::string optv6_value = "This is a test strin";
     EXPECT_EQ(Option::V6, optv6->getUniverse());
     EXPECT_EQ(123, optv6->getType());
-    EXPECT_EQ(Option::OPTION6_HDR_LEN + buf_.size(), optv6->len());
+    EXPECT_EQ(Option::OPTION6_HDR_LEN + buf_.size() - 1, optv6->len());
     EXPECT_EQ(optv6_value, optv6->getValue());
 }