1673dc3d4SNico Weber // Make sure the zones created by malloc_create_zone() are write-protected. 2673dc3d4SNico Weber #include <malloc/malloc.h> 3673dc3d4SNico Weber #include <stdio.h> 4673dc3d4SNico Weber 5673dc3d4SNico Weber // RUN: %clangxx_asan %s -o %t 6*e2bcc33bSDan Liew // RUN: ASAN_OPTIONS="abort_on_error=1" not --crash %run %t 2>&1 | FileCheck %s 7673dc3d4SNico Weber 8673dc3d4SNico Weber pwn(malloc_zone_t * unused_zone,size_t unused_size)9673dc3d4SNico Webervoid *pwn(malloc_zone_t *unused_zone, size_t unused_size) { 10673dc3d4SNico Weber printf("PWNED\n"); 11673dc3d4SNico Weber return NULL; 12673dc3d4SNico Weber } 13673dc3d4SNico Weber main()14673dc3d4SNico Weberint main() { 15673dc3d4SNico Weber malloc_zone_t *zone = malloc_create_zone(0, 0); 16673dc3d4SNico Weber zone->malloc = pwn; 17673dc3d4SNico Weber void *v = malloc_zone_malloc(zone, 1); 18673dc3d4SNico Weber // CHECK-NOT: PWNED 19673dc3d4SNico Weber return 0; 20673dc3d4SNico Weber } 21