]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Prevent double-free in mempool destructor cleanup 5693/head
authorVsevolod Stakhov <vsevolod@rspamd.com>
Tue, 21 Oct 2025 10:53:19 +0000 (11:53 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Tue, 21 Oct 2025 10:53:19 +0000 (11:53 +0100)
Mark heap as destroyed after rspamd_mempool_destructors_enforce to avoid
double destruction in subsequent rspamd_mempool_delete call

src/libutil/mem_pool.c

index 726d66d7d91e213b294b708d908e65fb4b879eab..d6362a06a15114e40628bfee90bc9864885162c4 100644 (file)
@@ -849,6 +849,8 @@ void rspamd_mempool_destructors_enforce(rspamd_mempool_t *pool)
 
                /* Destroy the heap itself */
                rspamd_heap_destroy(rspamd_mempool_destruct_heap, &pool->priv->dtors_heap);
+               /* Mark heap as destroyed to prevent double-free in rspamd_mempool_delete */
+               pool->priv->dtors_heap.a = NULL;
        }
 
        rspamd_mempool_variables_cleanup(pool);