| Kostya Serebryany | 707894b | 2016-08-02 22:25:38 +0000 | [diff] [blame] | 1 | // RUN: %clang_scudo %s -o %t | 
|  | 2 | // RUN:                                              %run %t 2>&1 | 
|  | 3 | // RUN: SCUDO_OPTIONS=DeallocationTypeMismatch=0     %run %t 2>&1 | 
|  | 4 | // RUN: SCUDO_OPTIONS=DeallocationTypeMismatch=1 not %run %t 2>&1 | FileCheck %s | 
|  | 5 |  | 
|  | 6 | // Tests that the options can be passed using getScudoDefaultOptions, and that | 
|  | 7 | // the environment ones take precedence over them. | 
|  | 8 |  | 
| Kostya Kortchinsky | 8d6257b | 2017-02-03 20:49:42 +0000 | [diff] [blame] | 9 | #include <assert.h> | 
| Kostya Serebryany | 707894b | 2016-08-02 22:25:38 +0000 | [diff] [blame] | 10 | #include <malloc.h> | 
| Kostya Kortchinsky | 8d6257b | 2017-02-03 20:49:42 +0000 | [diff] [blame] | 11 | #include <stdlib.h> | 
| Kostya Serebryany | 707894b | 2016-08-02 22:25:38 +0000 | [diff] [blame] | 12 |  | 
|  | 13 | extern "C" const char* __scudo_default_options() { | 
|  | 14 | return "DeallocationTypeMismatch=0";  // Defaults to true in scudo_flags.inc. | 
|  | 15 | } | 
|  | 16 |  | 
|  | 17 | int main(int argc, char **argv) | 
|  | 18 | { | 
|  | 19 | int *p = (int *)malloc(16); | 
| Kostya Kortchinsky | 8d6257b | 2017-02-03 20:49:42 +0000 | [diff] [blame] | 20 | assert(p); | 
| Kostya Serebryany | 707894b | 2016-08-02 22:25:38 +0000 | [diff] [blame] | 21 | delete p; | 
|  | 22 | return 0; | 
|  | 23 | } | 
|  | 24 |  | 
|  | 25 | // CHECK: ERROR: allocation type mismatch on address |