aboutsummaryrefslogtreecommitdiff
path: root/test/asan/TestCases/Linux/new_delete_mismatch_stack.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/asan/TestCases/Linux/new_delete_mismatch_stack.cc')
-rw-r--r--test/asan/TestCases/Linux/new_delete_mismatch_stack.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/asan/TestCases/Linux/new_delete_mismatch_stack.cc b/test/asan/TestCases/Linux/new_delete_mismatch_stack.cc
new file mode 100644
index 000000000000..bbf07cc21380
--- /dev/null
+++ b/test/asan/TestCases/Linux/new_delete_mismatch_stack.cc
@@ -0,0 +1,17 @@
+// Check that we report delete on a memory that belongs to a stack variable.
+
+// RUN: %clangxx_asan -g %s -o %t && %env_asan_opts=alloc_dealloc_mismatch=1 not %run %t 2>&1 | FileCheck %s
+
+#include <stdlib.h>
+
+static volatile char *x;
+
+int main() {
+ char a[10];
+ x = &a[0];
+ delete x;
+}
+
+// CHECK: AddressSanitizer: attempting free on address which was not malloc()-ed
+// CHECK: is located in stack of thread T0 at offset
+// CHECK: 'a'{{.*}} <== Memory access at offset {{16|32}} is inside this variable