2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 22:15:20 +00:00

Add regression test for [GL # 4090]

These insertions are added to produce a radix tree that will trigger
the INSIST reported in [GL #4090].  Due to fixes added since BIND 9.9
an extra insert in needed to ensure node->parent is non NULL.
This commit is contained in:
Mark Andrews
2023-05-26 11:09:33 +10:00
parent ac2e0bc3ff
commit 03ebe96110

View File

@@ -30,6 +30,55 @@
#include <tests/isc.h>
/* test radix node removal */
ISC_RUN_TEST_IMPL(isc_radix_remove) {
isc_radix_tree_t *radix = NULL;
isc_radix_node_t *node;
isc_prefix_t prefix;
isc_result_t result;
struct in_addr in_addr;
isc_netaddr_t netaddr;
UNUSED(state);
result = isc_radix_create(mctx, &radix, 32);
assert_int_equal(result, ISC_R_SUCCESS);
in_addr.s_addr = inet_addr("1.1.1.1");
isc_netaddr_fromin(&netaddr, &in_addr);
NETADDR_TO_PREFIX_T(&netaddr, prefix, 32);
node = NULL;
result = isc_radix_insert(radix, &node, NULL, &prefix);
assert_int_equal(result, ISC_R_SUCCESS);
node->data[0] = (void *)32;
isc_refcount_destroy(&prefix.refcount);
in_addr.s_addr = inet_addr("1.0.0.0");
isc_netaddr_fromin(&netaddr, &in_addr);
NETADDR_TO_PREFIX_T(&netaddr, prefix, 8);
node = NULL;
result = isc_radix_insert(radix, &node, NULL, &prefix);
assert_int_equal(result, ISC_R_SUCCESS);
node->data[0] = (void *)8;
isc_refcount_destroy(&prefix.refcount);
in_addr.s_addr = inet_addr("1.1.1.0");
isc_netaddr_fromin(&netaddr, &in_addr);
NETADDR_TO_PREFIX_T(&netaddr, prefix, 24);
node = NULL;
result = isc_radix_insert(radix, &node, NULL, &prefix);
assert_int_equal(result, ISC_R_SUCCESS);
node->data[0] = (void *)24;
isc_refcount_destroy(&prefix.refcount);
isc_radix_remove(radix, node);
isc_radix_destroy(radix, NULL);
}
/* test radix searching */
ISC_RUN_TEST_IMPL(isc_radix_search) {
isc_radix_tree_t *radix = NULL;
@@ -80,6 +129,7 @@ ISC_RUN_TEST_IMPL(isc_radix_search) {
ISC_TEST_LIST_START
ISC_TEST_ENTRY(isc_radix_remove)
ISC_TEST_ENTRY(isc_radix_search)
ISC_TEST_LIST_END