[ASan] Do not protect the malloc zone created by malloc_zone_create() on Snow Leopard...
authorAlexander Potapenko <glider@google.com>
Thu, 4 Jul 2013 10:16:12 +0000 (10:16 +0000)
committerAlexander Potapenko <glider@google.com>
Thu, 4 Jul 2013 10:16:12 +0000 (10:16 +0000)
Fixes https://code.google.com/p/address-sanitizer/issues/detail?id=208

llvm-svn: 185621

compiler-rt/lib/asan/asan_malloc_mac.cc

index 89e1471..f9f08f0 100644 (file)
@@ -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;
 }