From c87476dd5da5ba50e6f74e35e42151fbeea3601e Mon Sep 17 00:00:00 2001 From: kobalicek Date: Mon, 27 Feb 2023 20:41:08 +0100 Subject: [PATCH] [Bug] Use ReadWrite scope to fill memory in JitAllocator::shrink() (MAP_JIT) --- src/asmjit/core/jitallocator.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/asmjit/core/jitallocator.cpp b/src/asmjit/core/jitallocator.cpp index b3651d1..313736c 100644 --- a/src/asmjit/core/jitallocator.cpp +++ b/src/asmjit/core/jitallocator.cpp @@ -915,8 +915,13 @@ Error JitAllocator::shrink(void* rxPtr, size_t newSize) noexcept { block->markShrunkArea(areaStart + areaShrunkSize, areaEnd); // Fill released memory if the secure mode is enabled. - if (Support::test(impl->options, JitAllocatorOptions::kFillUnusedMemory)) - JitAllocatorImpl_fillPattern(block->rwPtr() + (areaStart + areaShrunkSize) * pool->granularity, fillPattern(), areaDiff * pool->granularity); + if (Support::test(impl->options, JitAllocatorOptions::kFillUnusedMemory)) { + uint8_t* spanPtr = block->rwPtr() + (areaStart + areaShrunkSize) * pool->granularity; + size_t spanSize = areaDiff * pool->granularity; + + VirtMem::ProtectJitReadWriteScope scope(spanPtr, spanSize); + JitAllocatorImpl_fillPattern(spanPtr, fillPattern(), spanSize); + } } return kErrorOk;