From 92cce1da6571f9fe4b904667c822ab8ff0ebe4b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 23 Feb 2022 09:12:51 +0100 Subject: [PATCH] Disable inactive handles caching when compiled with sanitizers When isc_nmhandle_t gets deactivated, it could be just put onto array stack to be reused later to safe some initialization time. Unfortunately, this might hide some use-after-free errors. Disable the inactive handles caching when compiled with Address or Thread Sanitizer. --- lib/isc/netmgr/netmgr.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c index 0e8a491831..0c906e69b9 100644 --- a/lib/isc/netmgr/netmgr.c +++ b/lib/isc/netmgr/netmgr.c @@ -1753,9 +1753,11 @@ nmhandle_deactivate(isc_nmsocket_t *sock, isc_nmhandle_t *handle) { INSIST(atomic_fetch_sub(&sock->ah, 1) > 0); +#if !__SANITIZE_ADDRESS && !__SANITIZE_THREAD__ if (atomic_load(&sock->active)) { reuse = isc_astack_trypush(sock->inactivehandles, handle); } +#endif /* !__SANITIZE_ADDRESS && !__SANITIZE_THREAD__ */ if (!reuse) { nmhandle_free(sock, handle); }