Changeset View
Changeset View
Standalone View
Standalone View
test/scudo/double-free.cpp
// RUN: %clangxx_scudo %s -o %t | // RUN: %clangxx_scudo %s -o %t | ||||
// RUN: not %run %t malloc 2>&1 | FileCheck %s | // RUN: not %run %t malloc 2>&1 | FileCheck %s | ||||
// RUN: not %run %t new 2>&1 | FileCheck %s | // RUN: not %run %t new 2>&1 | FileCheck %s | ||||
// RUN: not %run %t newarray 2>&1 | FileCheck %s | // RUN: not %run %t newarray 2>&1 | FileCheck %s | ||||
// RUN: not %run %t memalign 2>&1 | FileCheck %s | |||||
// Tests double-free error on pointers allocated with different allocation | // Tests double-free error on pointers allocated with different allocation | ||||
// functions. | // functions. | ||||
#include <assert.h> | #include <assert.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <string.h> | #include <string.h> | ||||
Show All 13 Lines | if (!strcmp(argv[1], "new")) { | ||||
delete p; | delete p; | ||||
} | } | ||||
if (!strcmp(argv[1], "newarray")) { | if (!strcmp(argv[1], "newarray")) { | ||||
int *p = new int[8]; | int *p = new int[8]; | ||||
assert(p); | assert(p); | ||||
delete[] p; | delete[] p; | ||||
delete[] p; | delete[] p; | ||||
} | } | ||||
if (!strcmp(argv[1], "memalign")) { | |||||
void *p = nullptr; | |||||
posix_memalign(&p, 0x100, sizeof(int)); | |||||
assert(p); | |||||
free(p); | |||||
free(p); | |||||
} | |||||
return 0; | return 0; | ||||
} | } | ||||
// CHECK: ERROR: invalid chunk state | // CHECK: ERROR: invalid chunk state |