Skip to content

Commit 75b6dba

Browse files
committed
- Fix CVE-2026-44608, Use after free and crash in RPZ code. Thanks
to Qifan Zhang, Palo Alto Networks, for the report.
1 parent 138fb48 commit 75b6dba

2 files changed

Lines changed: 8 additions & 4 deletions

File tree

doc/Changelog

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
- Fix CVE-2026-44390, Unbounded name compression in certain cases
2626
causes degradation of service. Thanks to Qifan Zhang, Palo Alto
2727
Networks, for the report.
28+
- Fix CVE-2026-44608, Use after free and crash in RPZ code. Thanks
29+
to Qifan Zhang, Palo Alto Networks, for the report.
2830

2931
23 April 2026: Wouter
3032
- Merge #1441: Fix buffer overrun in

services/rpz.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2469,6 +2469,7 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate*
24692469
{
24702470
struct auth_zones* az;
24712471
struct auth_zone* a;
2472+
struct dns_msg* ret = NULL;
24722473
struct clientip_synthesized_rr* raddr = NULL;
24732474
struct rpz* r = NULL;
24742475
struct local_zone* z = NULL;
@@ -2512,13 +2513,11 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate*
25122513
z = rpz_delegation_point_zone_lookup(is->dp, r->nsdname_zones,
25132514
is->qchase.qclass, &match);
25142515
if(z != NULL) {
2515-
lock_rw_unlock(&a->lock);
25162516
break;
25172517
}
25182518

25192519
raddr = rpz_delegation_point_ipbased_trigger_lookup(r, is);
25202520
if(raddr != NULL) {
2521-
lock_rw_unlock(&a->lock);
25222521
break;
25232522
}
25242523
lock_rw_unlock(&a->lock);
@@ -2533,9 +2532,12 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate*
25332532
if(z) {
25342533
lock_rw_unlock(&z->lock);
25352534
}
2536-
return rpz_apply_nsip_trigger(ms, &is->qchase, r, raddr, a);
2535+
ret = rpz_apply_nsip_trigger(ms, &is->qchase, r, raddr, a);
2536+
} else {
2537+
ret = rpz_apply_nsdname_trigger(ms, &is->qchase, r, z, &match, a);
25372538
}
2538-
return rpz_apply_nsdname_trigger(ms, &is->qchase, r, z, &match, a);
2539+
lock_rw_unlock(&a->lock);
2540+
return ret;
25392541
}
25402542

25412543
struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms,

0 commit comments

Comments
 (0)