summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Markwalder <tmark@isc.org>2022-06-14 10:07:00 -0400
committerThomas Markwalder <tmark@isc.org>2022-06-14 10:55:56 -0400
commite3ed2765e00a460de97f036f388cd5265bb053ba (patch)
tree876d6dc1c218d38acc045b68186aa0b87270cca2 /src
parent32745a62ea4f7f5996dde342a3a5cd254a20ad07 (diff)
[#2430] Addressed review comments
src/lib/dhcpsrv/parsers/client_class_def_parser.cc ClientClassDefParser::parse() - throws if user-context is not a map src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc TEST_F(ClientClassDefParserTest, invalidUserContext) - new test src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp6.cc src/share/database/scripts/mysql/dhcpdb_create.mysql src/share/database/scripts/pgsql/dhcpdb_create.pgsql src/share/database/scripts/pgsql/upgrade_011_to_012.sh.in typos
Diffstat (limited to 'src')
-rw-r--r--src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp6.cc4
-rw-r--r--src/lib/dhcpsrv/parsers/client_class_def_parser.cc6
-rw-r--r--src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc12
-rw-r--r--src/share/database/scripts/mysql/dhcpdb_create.mysql2
-rw-r--r--src/share/database/scripts/mysql/upgrade_013_to_014.sh.in2
-rw-r--r--src/share/database/scripts/pgsql/dhcpdb_create.pgsql2
-rw-r--r--src/share/database/scripts/pgsql/upgrade_011_to_012.sh.in2
7 files changed, 24 insertions, 6 deletions
diff --git a/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp6.cc b/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp6.cc
index 599a78cb2b..5ad7e43188 100644
--- a/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp6.cc
+++ b/src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp6.cc
@@ -4448,7 +4448,7 @@ TaggedStatementArray tagged_statements = { {
OID_INT8, // 10 min_preferred_lifetime
OID_INT8, // 11 max_preferred_lifetime
OID_TIMESTAMP, // 12 modification_ts
- OID_TEXT, // 13 user_conetx
+ OID_TEXT, // 13 user_context
OID_VARCHAR // 14 name (of class to update)
},
"UPDATE_CLIENT_CLASS6",
@@ -4472,7 +4472,7 @@ TaggedStatementArray tagged_statements = { {
OID_INT8, // 10 min_preferred_lifetime
OID_INT8, // 11 max_preferred_lifetime
OID_TIMESTAMP, // 12 modification_ts
- OID_TEXT, // 13 user_conetx
+ OID_TEXT, // 13 user_context
OID_VARCHAR // 14 name (of class to update)
},
"UPDATE_CLIENT_CLASS6_SAME_POSITION",
diff --git a/src/lib/dhcpsrv/parsers/client_class_def_parser.cc b/src/lib/dhcpsrv/parsers/client_class_def_parser.cc
index 07107a2baf..0f2c30357a 100644
--- a/src/lib/dhcpsrv/parsers/client_class_def_parser.cc
+++ b/src/lib/dhcpsrv/parsers/client_class_def_parser.cc
@@ -142,6 +142,12 @@ ClientClassDefParser::parse(ClientClassDictionaryPtr& class_dictionary,
// Parse user context
ConstElementPtr user_context = class_def_cfg->get("user-context");
+ if (user_context) {
+ if (user_context->getType() != Element::map) {
+ isc_throw(isc::dhcp::DhcpConfigError, "User context has to be a map ("
+ << user_context->getPosition() << ")");
+ }
+ }
// Let's try to parse the only-if-required flag
bool required = false;
diff --git a/src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc b/src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc
index a12a1ea99a..082954cb0c 100644
--- a/src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc
+++ b/src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc
@@ -1438,5 +1438,17 @@ TEST_F(ClientClassDefParserTest, preferredLifetimeTests) {
}
}
+// Verifies that an invalid user-context fails to parse.
+TEST_F(ClientClassDefParserTest, invalidUserContext) {
+ std::string cfg_text =
+ "{ \n"
+ " \"name\": \"one\", \n"
+ " \"user-context\": \"i am not a map\" \n"
+ "} \n";
+
+ ClientClassDefPtr cclass;
+ ASSERT_THROW_MSG(cclass = parseClientClassDef(cfg_text, AF_INET),
+ DhcpConfigError, "User context has to be a map (<string>:3:20)");
+}
} // end of anonymous namespace
diff --git a/src/share/database/scripts/mysql/dhcpdb_create.mysql b/src/share/database/scripts/mysql/dhcpdb_create.mysql
index c73e544ee1..19fa95a628 100644
--- a/src/share/database/scripts/mysql/dhcpdb_create.mysql
+++ b/src/share/database/scripts/mysql/dhcpdb_create.mysql
@@ -4344,7 +4344,7 @@ CREATE TRIGGER dhcp6_shared_network_BDEL BEFORE DELETE ON dhcp6_shared_network
END $$
DELIMITER ;
--- Add user_context column to Client class tables.
+-- Add user_context column to client class tables.
ALTER TABLE dhcp4_client_class ADD COLUMN user_context LONGTEXT NULL;
ALTER TABLE dhcp6_client_class ADD COLUMN user_context LONGTEXT NULL;
diff --git a/src/share/database/scripts/mysql/upgrade_013_to_014.sh.in b/src/share/database/scripts/mysql/upgrade_013_to_014.sh.in
index ffba56e97b..b8bb124a41 100644
--- a/src/share/database/scripts/mysql/upgrade_013_to_014.sh.in
+++ b/src/share/database/scripts/mysql/upgrade_013_to_014.sh.in
@@ -110,7 +110,7 @@ CREATE TRIGGER dhcp6_shared_network_BDEL BEFORE DELETE ON dhcp6_shared_network
END $$
DELIMITER ;
--- Add user_context column to Client class tables.
+-- Add user_context column to client class tables.
ALTER TABLE dhcp4_client_class ADD COLUMN user_context LONGTEXT NULL;
ALTER TABLE dhcp6_client_class ADD COLUMN user_context LONGTEXT NULL;
diff --git a/src/share/database/scripts/pgsql/dhcpdb_create.pgsql b/src/share/database/scripts/pgsql/dhcpdb_create.pgsql
index a087724096..8a330ead31 100644
--- a/src/share/database/scripts/pgsql/dhcpdb_create.pgsql
+++ b/src/share/database/scripts/pgsql/dhcpdb_create.pgsql
@@ -4969,7 +4969,7 @@ END;
$dhcp6_shared_network_BDEL$
LANGUAGE plpgsql;
--- Add user_context column to Client class tables.
+-- Add user_context column to client class tables.
ALTER TABLE dhcp4_client_class ADD COLUMN user_context JSON DEFAULT NULL;
ALTER TABLE dhcp6_client_class ADD COLUMN user_context JSON DEFAULT NULL;
diff --git a/src/share/database/scripts/pgsql/upgrade_011_to_012.sh.in b/src/share/database/scripts/pgsql/upgrade_011_to_012.sh.in
index cc3fccaa4b..3e048c44c9 100644
--- a/src/share/database/scripts/pgsql/upgrade_011_to_012.sh.in
+++ b/src/share/database/scripts/pgsql/upgrade_011_to_012.sh.in
@@ -90,7 +90,7 @@ END;
\$dhcp6_shared_network_BDEL\$
LANGUAGE plpgsql;
--- Add user_context column to Client class tables.
+-- Add user_context column to client class tables.
ALTER TABLE dhcp4_client_class ADD COLUMN user_context JSON DEFAULT NULL;
ALTER TABLE dhcp6_client_class ADD COLUMN user_context JSON DEFAULT NULL;