]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix a bug in rpz.c:del_name()
authorAram Sargsyan <aram@isc.org>
Wed, 11 Mar 2026 12:39:51 +0000 (12:39 +0000)
committerOndřej Surý <ondrej@sury.org>
Sat, 14 Mar 2026 12:01:55 +0000 (13:01 +0100)
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.

lib/dns/rpz.c

index a7a9408438caec28518c425d2b855551a738eddc..c5e3c9b8df7608e1dc77373cb0ecfcc3958e0ada 100644 (file)
@@ -2272,7 +2272,8 @@ del_name(dns_rpz_zone_t *rpz, dns_rpz_type_t rpz_type,
        result = dns_qp_getname(qp, trig_name, DNS_DBNAMESPACE_NORMAL,
                                (void **)&data, NULL);
        if (result != ISC_R_SUCCESS) {
-               return;
+               INSIST(data == NULL);
+               goto done;
        }
 
        INSIST(data != NULL);
@@ -2315,6 +2316,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);
 }