asan_errors.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Copyright (c) 2006-2018 Maxim Khizhinsky
  2. //
  3. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. // file LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. #ifdef CDS_ADDRESS_SANITIZER_ENABLED
  6. #include <cds_test/ext_gtest.h>
  7. namespace {
  8. class asan: public ::testing::Test
  9. {};
  10. TEST_F( asan, memory_leak )
  11. {
  12. constexpr size_t size = 100;
  13. size_t* arr = new size_t[size];
  14. for ( size_t i = 0; i < size; ++i ) {
  15. arr[i] = i;
  16. }
  17. }
  18. TEST_F( asan, array_bound )
  19. {
  20. constexpr size_t size = 100;
  21. size_t arr[size];
  22. size_t protect = 0;
  23. for ( size_t i = 0; i <= size; ++i ) {
  24. arr[i] = i;
  25. }
  26. protect = 0;
  27. }
  28. TEST_F( asan, uninit_var )
  29. {
  30. constexpr size_t size = 100;
  31. size_t arr[size];
  32. for ( size_t i = 0; i < size; ++i ) {
  33. arr[i] = i;
  34. }
  35. size_t n = arr[n];
  36. n = arr[n / 2];
  37. }
  38. } // namespace
  39. #endif // #ifdef CDS_ADDRESS_SANITIZER_ENABLED