[svn] commit: r1668 - in /trunk/src/lib/cc: data.cc data_unittests.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Apr 1 09:13:52 UTC 2010
Author: jelte
Date: Thu Apr 1 09:13:52 2010
New Revision: 1668
Log:
check map tag size in create functions too, for consistency, i think we should indeed remove the direct map access and constructor, see comment in ticket 129
Modified:
trunk/src/lib/cc/data.cc
trunk/src/lib/cc/data_unittests.cc
Modified: trunk/src/lib/cc/data.cc
==============================================================================
--- trunk/src/lib/cc/data.cc (original)
+++ trunk/src/lib/cc/data.cc Thu Apr 1 09:13:52 2010
@@ -249,6 +249,12 @@
ElementPtr
Element::create(const std::map<std::string, ElementPtr>& m) {
+ for (std::map<std::string, ElementPtr>::const_iterator it = m.begin();
+ it != m.end(); ++it) {
+ if ((*it).first.length() > 255) {
+ isc_throw(TypeError, "Map tag is too long");
+ }
+ }
try {
return ElementPtr(new MapElement(m));
} catch (std::bad_alloc) {
Modified: trunk/src/lib/cc/data_unittests.cc
==============================================================================
--- trunk/src/lib/cc/data_unittests.cc (original)
+++ trunk/src/lib/cc/data_unittests.cc Thu Apr 1 09:13:52 2010
@@ -211,8 +211,14 @@
"9123456789abcdefa123456789abcdefb123456789abcdef"
"c123456789abcdefd123456789abcdefe123456789abcdef"
"f123456789abcde");
+ std::map<std::string, ElementPtr> long_maptag_map;
+
EXPECT_EQ(255, long_maptag.length()); // check prerequisite
el = Element::createFromString("{ \"" + long_maptag + "\": \"bar\"}");
+ EXPECT_EQ("bar", el->find(long_maptag)->stringValue());
+
+ long_maptag_map[long_maptag] = Element::create("bar");
+ el = Element::create(long_maptag_map);
EXPECT_EQ("bar", el->find(long_maptag)->stringValue());
// A one-byte longer tag should trigger an exception.
@@ -220,6 +226,10 @@
EXPECT_THROW(Element::createFromString("{ \"" + long_maptag +
"\": \"bar\"}"),
ParseError);
+
+ long_maptag_map[long_maptag] = Element::create("bar");
+ EXPECT_THROW(Element::create(long_maptag_map), TypeError);
+
}
TEST(Element, to_and_from_wire) {
More information about the bind10-changes
mailing list