• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cl_asan -Od %s -Fe%t
2 // RUN: %env_asan_opts=windows_hook_rtl_allocators=true not %run %t 2>&1 | FileCheck %s
3 // UNSUPPORTED: asan-64-bits
4 #include <stdio.h>
5 #include <windows.h>
6 
main()7 int main() {
8   char *oldbuf;
9   size_t sz = 8;
10   HANDLE procHeap = GetProcessHeap();
11   oldbuf = (char *)HeapAlloc(procHeap, 0, sz);
12   char *newbuf = oldbuf;
13   while (oldbuf == newbuf) {
14     sz *= 2;
15     newbuf = (char *)HeapReAlloc(procHeap, 0, oldbuf, sz);
16   }
17 
18   newbuf[0] = 'a';
19   oldbuf[0] = 'a';
20   // CHECK: AddressSanitizer: heap-use-after-free on address [[ADDR:0x[0-9a-f]+]]
21   // CHECK: WRITE of size 1 at [[WRITE2:0x[0-9a-f]+]] thread T0
22   // CHECK: #0 {{0x[0-9a-f]+ in main.*}}:[[@LINE-3]]
23 }
24