1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // 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 "base/sanitizer_buildflags.h"
- #include "build/build_config.h"
- namespace base {
- namespace debug {
- #if defined(ADDRESS_SANITIZER) || BUILDFLAG(IS_HWASAN)
- // 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_
|