]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[738-kea4-crash-when-remote-network4-del-command-is-issued-with-subnets-action-delete...
authorFrancis Dupont <fdupont@isc.org>
Thu, 18 Jul 2019 09:22:42 +0000 (11:22 +0200)
committerFrancis Dupont <fdupont@isc.org>
Thu, 18 Jul 2019 11:27:40 +0000 (13:27 +0200)
src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc
src/hooks/dhcp/mysql_cb/mysql_cb_dhcp6.cc
src/hooks/dhcp/mysql_cb/tests/mysql_cb_dhcp4_unittest.cc
src/hooks/dhcp/mysql_cb/tests/mysql_cb_dhcp6_unittest.cc

index de9f5ee6ba30b8ea48454fed5e724f32a23bc218..b9e3b19462d8cba1e47e4de6a54267ce4d72c95e 100644 (file)
@@ -2941,7 +2941,7 @@ MySqlConfigBackendDHCPv4::deleteSharedNetworkSubnets4(const db::ServerSelector&
                                                       const std::string& shared_network_name) {
     if (!server_selector.amAny()) {
         isc_throw(InvalidOperation, "deleting all subnets from a shared "
-                  "network is defined only using ANY server");
+                  "network requires using ANY server selector");
     }
     LOG_DEBUG(mysql_cb_logger, DBGLVL_TRACE_BASIC, MYSQL_CB_DELETE_SHARED_NETWORK_SUBNETS4)
         .arg(shared_network_name);
index 2e4ae9d149ed0c15c5cc7ef606bf7ff9ee543388..6b8fdfde183422eef9d61e00b53e7ae4d2741ad7 100644 (file)
@@ -3321,7 +3321,7 @@ MySqlConfigBackendDHCPv6::deleteSharedNetworkSubnets6(const db::ServerSelector&
                                                       const std::string& shared_network_name) {
     if (!server_selector.amAny()) {
         isc_throw(InvalidOperation, "deleting all subnets from a shared "
-                  "network is defined only using ANY server");
+                  "network requires using ANY server selector");
     }
     LOG_DEBUG(mysql_cb_logger, DBGLVL_TRACE_BASIC, MYSQL_CB_DELETE_SHARED_NETWORK_SUBNETS6)
         .arg(shared_network_name);
index 9c7a4a8944f12a27ebeb0f3cc415c1a1713bb283..f562bf1a77981dce2111fea56696fbad688de970 100644 (file)
@@ -2231,6 +2231,19 @@ TEST_F(MySqlConfigBackendDHCPv4Test, getAllSharedNetworks4) {
     EXPECT_EQ(0, cbptr_->deleteAllSharedNetworks4(ServerSelector::ONE("server1")));
 
     // Delete first shared network with it subnets and verify it is gone.
+    // It requires ANY so verifies that all other choices throw.
+    EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets4(ServerSelector::UNASSIGNED(),
+                                                     test_networks_[1]->getName()),
+                 isc::InvalidOperation);
+    EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets4(ServerSelector::ALL(),
+                                                     test_networks_[1]->getName()),
+                 isc::InvalidOperation);
+    EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets4(ServerSelector::ONE("server1"),
+                                                     test_networks_[1]->getName()),
+                 isc::InvalidOperation);
+    EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets4(ServerSelector::MULTIPLE({ "server1", "server2" }),
+                                                     test_networks_[1]->getName()),
+                 isc::InvalidOperation);
 
     // Begin by its subnet.
     EXPECT_EQ(1, cbptr_->deleteSharedNetworkSubnets4(ServerSelector::ANY(),
index 705b81ddf54997ed4d495da98f30b44f4c419a2d..b5fdc39c007455c16f94eca5f4b4ffa4599eb16b 100644 (file)
@@ -2246,6 +2246,19 @@ TEST_F(MySqlConfigBackendDHCPv6Test, getAllSharedNetworks6) {
     EXPECT_EQ(0, cbptr_->deleteAllSharedNetworks6(ServerSelector::ONE("server1")));
 
     // Delete first shared network with it subnets and verify it is gone.
+    // It requires ANY so verifies that all other choices throw.
+    EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets6(ServerSelector::UNASSIGNED(),
+                                                     test_networks_[1]->getName()),
+                 isc::InvalidOperation);
+    EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets6(ServerSelector::ALL(),
+                                                     test_networks_[1]->getName()),
+                 isc::InvalidOperation);
+    EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets6(ServerSelector::ONE("server1"),
+                                                     test_networks_[1]->getName()),
+                 isc::InvalidOperation);
+    EXPECT_THROW(cbptr_->deleteSharedNetworkSubnets6(ServerSelector::MULTIPLE({ "server1", "server2" }),
+                                                     test_networks_[1]->getName()),
+                 isc::InvalidOperation);
 
     // Begin by its subnet.
     EXPECT_EQ(1, cbptr_->deleteSharedNetworkSubnets6(ServerSelector::ANY(),