]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2512] Use CharStringData when constructing from parameters too
authorMukund Sivaraman <muks@isc.org>
Tue, 11 Feb 2014 08:05:59 +0000 (13:35 +0530)
committerMukund Sivaraman <muks@isc.org>
Tue, 11 Feb 2014 08:06:01 +0000 (13:36 +0530)
This supports handling escapes and such when coming from the
presentation format.

src/lib/dns/rdata/generic/caa_257.cc
src/lib/dns/tests/rdata_caa_unittest.cc

index a031ab1ede1084b609c3e356f47b85c336b44596..9e6fa9bab552162e3aebfc490abea2e7f8f7071e 100644 (file)
@@ -195,9 +195,12 @@ CAA::CAA(uint8_t flags, const std::string& tag, const std::string& value) :
                   "CAA tag field is too large: " << tag.size());
     }
 
+    MasterToken::StringRegion region;
+    region.beg = &value[0]; // note std ensures this works even if str is empty
+    region.len = value.size();
+
     detail::CharStringData value_vec;
-    value_vec.reserve(value.size());
-    value_vec.insert(value_vec.end(), value.begin(), value.end());
+    detail::stringToCharStringData(region, value_vec);
 
     impl_ = new CAAImpl(flags, tag, value_vec);
 }
index 05d177e00fdd192a60dcd37aa3d3af98cc9cca96..a2a9f9ea80d2b271c129c5c2761e006887349c04 100644 (file)
@@ -207,6 +207,12 @@ TEST_F(Rdata_CAA_Test, createFromParams) {
     const generic::CAA rdata_caa2(0, "issue", "ca.example.net");
     EXPECT_EQ(0, rdata_caa2.compare(rdata_caa));
 
+    const generic::CAA rdata_caa4(0, "issue", "ca.e\\xample.net");
+    EXPECT_EQ(0, rdata_caa4.compare(rdata_caa));
+
+    const generic::CAA rdata_caa5(0, "issue", "ca.e\\120ample.net");
+    EXPECT_EQ(0, rdata_caa5.compare(rdata_caa));
+
     // Tag is empty
     EXPECT_THROW(const generic::CAA rdata_caa3(0, "", "ca.example.net"),
                  isc::InvalidParameter);