| // Copyright 2014 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 | // | 
 | // Defines some functions that intentionally do an invalid memory access in | 
 | // order to trigger an AddressSanitizer (ASan) error report. | 
 |  | 
 | #ifndef BASE_DEBUG_ASAN_INVALID_ACCESS_H_ | 
 | #define BASE_DEBUG_ASAN_INVALID_ACCESS_H_ | 
 |  | 
 | #include "base/base_export.h" | 
 | #include "base/compiler_specific.h" | 
 | #include "build/build_config.h" | 
 |  | 
 | namespace base { | 
 | namespace debug { | 
 |  | 
 | #if defined(ADDRESS_SANITIZER) | 
 |  | 
 | // Generates an heap buffer overflow. | 
 | BASE_EXPORT NOINLINE void AsanHeapOverflow(); | 
 |  | 
 | // Generates an heap buffer underflow. | 
 | BASE_EXPORT NOINLINE void AsanHeapUnderflow(); | 
 |  | 
 | // Generates an use after free. | 
 | BASE_EXPORT NOINLINE void AsanHeapUseAfterFree(); | 
 |  | 
 | // The "corrupt-block" and "corrupt-heap" classes of bugs is specific to | 
 | // Windows. | 
 | #if defined(OS_WIN) | 
 | // Corrupts a memory block and makes sure that the corruption gets detected when | 
 | // we try to free this block. | 
 | BASE_EXPORT NOINLINE void AsanCorruptHeapBlock(); | 
 |  | 
 | // Corrupts the heap and makes sure that the corruption gets detected when a | 
 | // crash occur. | 
 | BASE_EXPORT NOINLINE void AsanCorruptHeap(); | 
 |  | 
 | #endif  // OS_WIN | 
 | #endif  // ADDRESS_SANITIZER | 
 |  | 
 | }  // namespace debug | 
 | }  // namespace base | 
 |  | 
 | #endif  // BASE_DEBUG_ASAN_INVALID_ACCESS_H_ |