From 439144bcaafb1b3850e39ec30e0809861c1e339d Mon Sep 17 00:00:00 2001 From: Aram Sargsyan Date: Wed, 11 Mar 2026 12:39:51 +0000 Subject: [PATCH] Fix a bug in rpz.c:del_name() When the dns_qp_getname() call returns an error the del_name() function just returns without cleaning up the trasnaction. Instead of returning, jump to a new label 'done:' similar to the code written in the add_nm() function. (cherry picked from commit 4df5b9ac32fd3adb9bd1dfa94a778edd1cda04c5) --- lib/dns/rpz.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/dns/rpz.c b/lib/dns/rpz.c index 0d61fdf364..5fea09877d 100644 --- a/lib/dns/rpz.c +++ b/lib/dns/rpz.c @@ -2370,7 +2370,8 @@ del_name(dns_rpz_zone_t *rpz, dns_rpz_type_t rpz_type, result = dns_qp_getname(qp, trig_name, (void **)&data, NULL); if (result != ISC_R_SUCCESS) { - return; + INSIST(data == NULL); + goto done; } INSIST(data != NULL); @@ -2412,6 +2413,7 @@ del_name(dns_rpz_zone_t *rpz, dns_rpz_type_t rpz_type, RWUNLOCK(&rpz->rpzs->search_lock, isc_rwlocktype_write); } +done: dns_qp_compact(qp, DNS_QPGC_MAYBE); dns_qpmulti_commit(rpzs->table, &qp); }