]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2430] Addressed review comments
authorThomas Markwalder <tmark@isc.org>
Tue, 14 Jun 2022 14:07:00 +0000 (10:07 -0400)
committerThomas Markwalder <tmark@isc.org>
Tue, 14 Jun 2022 14:55:56 +0000 (10:55 -0400)
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

src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp6.cc
src/lib/dhcpsrv/parsers/client_class_def_parser.cc
src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc
src/share/database/scripts/mysql/dhcpdb_create.mysql
src/share/database/scripts/mysql/upgrade_013_to_014.sh.in
src/share/database/scripts/pgsql/dhcpdb_create.pgsql
src/share/database/scripts/pgsql/upgrade_011_to_012.sh.in

index 599a78cb2be41feb992125e04d40814cbd6a6104..5ad7e4318846b2a7fa93ceab0cbcaf246d241cec 100644 (file)
@@ -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",
index 07107a2bafeeb8912fb474679f74cb90e4eaa6bf..0f2c30357aa9afef1445471894c44be30c8f5037 100644 (file)
@@ -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;
index a12a1ea99a0f23d75f356fd0345bacfcd1fdf35b..082954cb0ce6c4d27fe119496bcb5cfe90e631ce 100644 (file)
@@ -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
index c73e544ee1afc6a47cb0c5ae039e0958c9ff2e21..19fa95a62872635ce4b521eac1e43ca71263391d 100644 (file)
@@ -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;
 
index ffba56e97bd66c686ab0756c145bfda4ce71f5f4..b8bb124a41b94d2fbe4807176207284e6186f9ad 100644 (file)
@@ -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;
 
index a087724096a8918e966a6417b6df266285d9b327..8a330ead31279343a9ebf1f539eec2ae1f00fe4a 100644 (file)
@@ -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;
 
index cc3fccaa4b2517c3c4b6712a7fc62a92f2c7c276..3e048c44c96a59b5e261107c3457cd6c53f3dbd9 100644 (file)
@@ -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;