diff options
| author | Kuba Brecka <kuba.brecka@gmail.com> | 2015-01-09 00:26:45 +0000 |
|---|---|---|
| committer | Kuba Brecka <kuba.brecka@gmail.com> | 2015-01-09 00:26:45 +0000 |
| commit | 1a03ccd848b5d59ad96601821a073edab9cecde1 (patch) | |
| tree | 7e62c7bf726b713a18fca819c030cb3a93b8386e | |
| parent | 33d7f9de332701294f6528ae7151bc40ba008737 (diff) | |
| download | bcm5719-llvm-1a03ccd848b5d59ad96601821a073edab9cecde1.tar.gz bcm5719-llvm-1a03ccd848b5d59ad96601821a073edab9cecde1.zip | |
[asan] Adding a regression test for https://code.google.com/p/address-sanitizer/issues/detail?id=368
llvm-svn: 225484
| -rw-r--r-- | compiler-rt/test/asan/TestCases/Darwin/address-range-limit.mm | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/compiler-rt/test/asan/TestCases/Darwin/address-range-limit.mm b/compiler-rt/test/asan/TestCases/Darwin/address-range-limit.mm new file mode 100644 index 00000000000..a6906766d7e --- /dev/null +++ b/compiler-rt/test/asan/TestCases/Darwin/address-range-limit.mm @@ -0,0 +1,38 @@ +// Regression test for https://code.google.com/p/address-sanitizer/issues/detail?id=368. + +// RUN: %clang_asan %s -Wno-deprecated-declarations -flat_namespace -bundle -undefined suppress -o %t.bundle +// RUN: %clang_asan %s -Wno-deprecated-declarations -o %t -framework Foundation && not %run %t 2>&1 | FileCheck %s + +#import <Foundation/Foundation.h> +#import <mach-o/dyld.h> + +#include <string> + +int main(int argc, char *argv[]) { + for (int i = 0; i < 10; i++) { + NSObjectFileImage im; + + std::string path = std::string(argv[0]) + ".bundle"; + NSObjectFileImageReturnCode rc = + NSCreateObjectFileImageFromFile(path.c_str(), &im); + if (rc != NSObjectFileImageSuccess) { + fprintf(stderr, "Could not load bundle.\n"); + exit(-1); + } + + NSModule handle = NSLinkModule(im, "a.bundle", 0); + if (handle == 0) { + fprintf(stderr, "Could not load bundle.\n"); + exit(-1); + } + printf("h: %p\n", handle); + } + + char *ptr = (char *)malloc(10); + ptr[10] = 'x'; // BOOM +} + +// CHECK: AddressSanitizer: heap-buffer-overflow +// CHECK: WRITE of size 1 +// CHECK: {{#0 .* in main}} +// CHECK: is located 0 bytes to the right of 10-byte region |

