From d0c91acb58cfa04a43094a6d4be1b02da41b7c3a Mon Sep 17 00:00:00 2001 From: Alexander Potapenko Date: Thu, 4 Jul 2013 10:16:12 +0000 Subject: [PATCH] [ASan] Do not protect the malloc zone created by malloc_zone_create() on Snow Leopard and earlier systems. Fixes https://code.google.com/p/address-sanitizer/issues/detail?id=208 llvm-svn: 185621 --- compiler-rt/lib/asan/asan_malloc_mac.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/compiler-rt/lib/asan/asan_malloc_mac.cc b/compiler-rt/lib/asan/asan_malloc_mac.cc index 89e1471..f9f08f02 100644 --- a/compiler-rt/lib/asan/asan_malloc_mac.cc +++ b/compiler-rt/lib/asan/asan_malloc_mac.cc @@ -50,9 +50,12 @@ INTERCEPTOR(malloc_zone_t *, malloc_create_zone, &stack, FROM_MALLOC); internal_memcpy(new_zone, &asan_zone, sizeof(asan_zone)); new_zone->zone_name = NULL; // The name will be changed anyway. - // Prevent the client app from overwriting the zone contents. - // Library functions that need to modify the zone will set PROT_WRITE on it. - mprotect(new_zone, allocated_size, PROT_READ); + if (GetMacosVersion() >= MACOS_VERSION_LION) { + // Prevent the client app from overwriting the zone contents. + // Library functions that need to modify the zone will set PROT_WRITE on it. + // This matches the behavior of malloc_create_zone() on OSX 10.7 and higher. + mprotect(new_zone, allocated_size, PROT_READ); + } return new_zone; } -- 2.7.4