brintos

brintos / llvm-project-archived public Read only

0
0
Text · 986 B · 8969a28 Raw
33 lines · cpp
1// RUN: %clangxx_asan %s -o %t2// RUN: not %run %t 2>&1 | FileCheck %s3// REQUIRES: asan-64-bits4 5#include <inttypes.h>6#include <stdarg.h>7#include <stdint.h>8#include <stdio.h>9#include <string.h>10 11int main() {12  char *p = new char;13  char *dest = new char;14  const size_t offset = 0x4567890123456789;15 16  // The output here needs to match the output from the sanitizer runtime,17  // which includes 0x and prints hex in lower case.18  //19  // On Windows, %p omits %0x and prints hex characters in upper case,20  // so we use PRIxPTR instead of %p.21  fprintf(stderr, "Expected bad addr: %#" PRIxPTR "\n",22          reinterpret_cast<uintptr_t>(p + offset));23  // Flush it so the output came out before the asan report.24  fflush(stderr);25 26  memmove(dest, p, offset);27  return 0;28}29 30// CHECK: Expected bad addr: [[ADDR:0x[0-9,a-f]+]]31// CHECK: AddressSanitizer: unknown-crash on address [[ADDR]]32// CHECK: Address [[ADDR]] is a wild pointer inside of access range of size 0x456789012345678933