[ASan] make free_hook_realloc test more robust
llvm-svn: 183387
This commit is contained in:
parent
b91216817f
commit
87a59e5652
|
@ -1,18 +1,31 @@
|
|||
// Check that free hook doesn't conflict with Realloc.
|
||||
// RUN: %clangxx_asan -O2 %s -o %t && %t
|
||||
#include <assert.h>
|
||||
// RUN: %clangxx_asan -O2 %s -o %t
|
||||
// RUN: %t 2>&1 | FileCheck %s
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static void *glob_ptr;
|
||||
|
||||
extern "C" {
|
||||
void __asan_free_hook(void *ptr) {
|
||||
*(int*)ptr = 0;
|
||||
if (ptr == glob_ptr) {
|
||||
*(int*)ptr = 0;
|
||||
write(1, "FreeHook\n", sizeof("FreeHook\n"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int *x = (int*)malloc(100);
|
||||
x[0] = 42;
|
||||
glob_ptr = x;
|
||||
int *y = (int*)realloc(x, 200);
|
||||
assert(y[0] == 42);
|
||||
// Verify that free hook was called and didn't spoil the memory.
|
||||
if (y[0] != 42) {
|
||||
_exit(1);
|
||||
}
|
||||
write(1, "Passed\n", sizeof("Passed\n"));
|
||||
// CHECK: FreeHook
|
||||
// CHECK: Passed
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue