From: Ondřej Surý Date: Wed, 23 Feb 2022 23:14:26 +0000 (+0100) Subject: Disable inactive uvreqs caching when compiled with sanitizers X-Git-Tag: v9.16.27~9^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe5cd40a3acc33cb01479265fc887accff794441;p=thirdparty%2Fbind9.git Disable inactive uvreqs caching when compiled with sanitizers When isc__nm_uvreq_t gets deactivated, it could be just put onto array stack to be reused later to save some initialization time. Unfortunately, this might hide some use-after-free errors. Disable the inactive uvreqs caching when compiled with Address or Thread Sanitizer. (cherry picked from commit be339b3c8399bb6ccf8acd26edfbb721b9c7e256) --- diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c index 09d09161c9f..4829af52f9b 100644 --- a/lib/isc/netmgr/netmgr.c +++ b/lib/isc/netmgr/netmgr.c @@ -2384,10 +2384,14 @@ isc___nm_uvreq_put(isc__nm_uvreq_t **req0, isc_nmsocket_t *sock FLARG) { handle = req->handle; req->handle = NULL; +#if !__SANITIZE_ADDRESS__ && !__SANITIZE_THREAD__ if (!isc__nmsocket_active(sock) || !isc_astack_trypush(sock->inactivereqs, req)) { isc_mem_put(sock->mgr->mctx, req, sizeof(*req)); } +#else /* !__SANITIZE_ADDRESS__ && !__SANITIZE_THREAD__ */ + isc_mem_put(sock->mgr->mctx, req, sizeof(*req)); +#endif /* !__SANITIZE_ADDRESS__ && !__SANITIZE_THREAD__ */ if (handle != NULL) { isc__nmhandle_detach(&handle FLARG_PASS);