]> git.proxmox.com Git - rustc.git/blame - src/compiler-rt/test/scudo/double-free.cpp
New upstream version 1.19.0+dfsg3
[rustc.git] / src / compiler-rt / test / scudo / double-free.cpp
CommitLineData
5bcae85e
SL
1// RUN: %clang_scudo %s -o %t
2// RUN: not %run %t malloc 2>&1 | FileCheck %s
3// RUN: not %run %t new 2>&1 | FileCheck %s
4// RUN: not %run %t newarray 2>&1 | FileCheck %s
5// RUN: not %run %t memalign 2>&1 | FileCheck %s
6
7// Tests double-free error on pointers allocated with different allocation
8// functions.
9
10#include <assert.h>
11#include <stdlib.h>
12#include <string.h>
13
14int main(int argc, char **argv)
15{
16 assert(argc == 2);
17 if (!strcmp(argv[1], "malloc")) {
18 void *p = malloc(sizeof(int));
19 if (!p)
20 return 1;
21 free(p);
22 free(p);
23 }
24 if (!strcmp(argv[1], "new")) {
25 int *p = new int;
26 if (!p)
27 return 1;
28 delete p;
29 delete p;
30 }
31 if (!strcmp(argv[1], "newarray")) {
32 int *p = new int[8];
33 if (!p)
34 return 1;
35 delete[] p;
36 delete[] p;
37 }
38 if (!strcmp(argv[1], "memalign")) {
39 void *p = nullptr;
40 posix_memalign(&p, 0x100, sizeof(int));
41 if (!p)
42 return 1;
43 free(p);
44 free(p);
45 }
46 return 0;
47}
48
7cac9316 49// CHECK: ERROR: invalid chunk state