// RUN: %clangxx_asan %s -o %t // RUN: not %run %t 2>&1 | FileCheck %s // REQUIRES: asan-64-bits #include #include #include #include #include int main() { char *p = new char; char *dest = new char; const size_t offset = 0x4567890123456789; // The output here needs to match the output from the sanitizer runtime, // which includes 0x and prints hex in lower case. // // On Windows, %p omits %0x and prints hex characters in upper case, // so we use PRIxPTR instead of %p. fprintf(stderr, "Expected bad addr: %#" PRIxPTR "\n", reinterpret_cast(p + offset)); // Flush it so the output came out before the asan report. fflush(stderr); memmove(dest, p, offset); return 0; } // CHECK: Expected bad addr: [[ADDR:0x[0-9,a-f]+]] // CHECK: AddressSanitizer: unknown-crash on address [[ADDR]] // CHECK: Address [[ADDR]] is a wild pointer inside of access range of size 0x4567890123456789