brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 14d4601 Raw
41 lines · cpp
1#include <stdio.h>2#include <windows.h>3 4// RUN: %clang_cl_asan %LD %Od -DDLL %s %Fe%t.dll5// RUN: %clang_cl %Od -DEXE %s %Fe%te.exe6// RUN: %env_asan_opts=windows_hook_rtl_allocators=true not %run %te.exe %t.dll 2>&1 | FileCheck %s7// REQUIRES: asan-dynamic-runtime8// REQUIRES: asan-32-bits9 10#include <cassert>11#include <stdio.h>12#include <windows.h>13extern "C" {14#if defined(EXE)15 16int main(int argc, char **argv) {17  void *region_without_hooks = HeapAlloc(GetProcessHeap(), 0, 10);18  HMODULE lib = LoadLibraryA(argv[1]);19  assert(lib != INVALID_HANDLE_VALUE);20  assert(0 != FreeLibrary(lib));21  assert(0 != HeapFree(GetProcessHeap(), 0, region_without_hooks));22  assert(0 != HeapFree(GetProcessHeap(), 0, region_without_hooks));23}24#elif defined(DLL)25// This global is registered at startup.26 27BOOL WINAPI DllMain(HMODULE, DWORD reason, LPVOID) {28  fprintf(stderr, "in DLL(reason=%d)\n", (int)reason);29  fflush(0);30  return TRUE;31}32 33// CHECK: in DLL(reason=1)34// CHECK: in DLL(reason=0)35// CHECK: AddressSanitizer: nested bug in the same thread, aborting.36 37#else38#error oops!39#endif40}41