brintos

brintos / llvm-project-archived public Read only

0
0
Text · 814 B · 16efae7 Raw
29 lines · c
1// Test strict_string_checks option in strcasestr function2// RUN: %clang_asan %s -o %t && %run %t 2>&13// RUN: %env_asan_opts=strict_string_checks=false %run %t 2>&14// RUN: %env_asan_opts=strict_string_checks=true not %run %t 2>&1 | FileCheck %s5 6// There's no interceptor for strcasestr on Windows7// XFAIL: target={{.*windows-(msvc.*|gnu)}}8 9#define _GNU_SOURCE10#include <assert.h>11#include <stdlib.h>12#include <string.h>13 14int main(int argc, char **argv) {15  size_t size = 100;16  char *s1 = (char*)malloc(size);17  char *s2 = (char*)malloc(size);18  memset(s1, 'o', size);19  memset(s2, 'O', size);20  s2[size - 1]='\0';21  char* r = strcasestr(s1, s2);22  // CHECK: {{.*ERROR: AddressSanitizer: heap-buffer-overflow on address}}23  // CHECK: READ of size 10124  assert(r == s1);25  free(s1);26  free(s2);27  return 0;28}29