diff --git a/CHANGES b/CHANGES index b225552307..1e7964df21 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +4087. [bug] Fix a crash due to use-after-free due to sequencing + of tasks actions. [RT #38495] + 4085. [bug] ISC_PLATFORM_HAVEXADDQ could be inconsistently set. [RT #38828] diff --git a/lib/dns/adb.c b/lib/dns/adb.c index c1a1d750cc..b552d467ec 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -1479,6 +1479,7 @@ clean_finds_at_name(dns_adbname_t *name, isc_eventtype_t evtype, ev, task, find); isc_task_sendanddetach(&task, (isc_event_t **)&ev); + find->flags |= FIND_EVENT_SENT; } else { DP(DEF_LEVEL, "cfan: skipping find %p", find); } diff --git a/lib/dns/zone.c b/lib/dns/zone.c index c2859536fd..904d9a28e1 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -9744,9 +9744,6 @@ static void notify_destroy(dns_notify_t *notify, isc_boolean_t locked) { isc_mem_t *mctx; - /* - * Caller holds zone lock. - */ REQUIRE(DNS_NOTIFY_VALID(notify)); if (notify->zone != NULL) {