brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 3b2945b Raw
41 lines · cpp
1// RUN: %clangxx_scudo -fsized-deallocation %s -o %t2// RUN: %env_scudo_opts=DeleteSizeMismatch=1     %run %t gooddel    2>&13// RUN: %env_scudo_opts=DeleteSizeMismatch=1 not %run %t baddel     2>&1 | FileCheck %s4// RUN: %env_scudo_opts=DeleteSizeMismatch=0     %run %t baddel     2>&15// RUN: %env_scudo_opts=DeleteSizeMismatch=1     %run %t gooddelarr 2>&16// RUN: %env_scudo_opts=DeleteSizeMismatch=1 not %run %t baddelarr  2>&1 | FileCheck %s7// RUN: %env_scudo_opts=DeleteSizeMismatch=0     %run %t baddelarr  2>&18 9// Ensures that the sized delete operator errors out when the appropriate10// option is passed and the sizes do not match between allocation and11// deallocation functions.12 13#include <assert.h>14#include <stdlib.h>15#include <string.h>16 17#include <new>18 19int main(int argc, char **argv) {20  assert(argc == 2);21  if (!strcmp(argv[1], "gooddel")) {22    long long *p = new long long;23    operator delete(p, sizeof(long long));24  }25  if (!strcmp(argv[1], "baddel")) {26    long long *p = new long long;27    operator delete(p, 2);28  }29  if (!strcmp(argv[1], "gooddelarr")) {30    char *p = new char[64];31    operator delete[](p, 64);32  }33  if (!strcmp(argv[1], "baddelarr")) {34    char *p = new char[63];35    operator delete[](p, 64);36  }37  return 0;38}39 40// CHECK: ERROR: invalid sized delete when deallocating address41