diff options
-rw-r--r-- | absl/container/btree_test.cc | 13 | ||||
-rw-r--r-- | absl/container/internal/btree.h | 4 | ||||
-rw-r--r-- | absl/container/internal/raw_hash_set.h | 1 | ||||
-rw-r--r-- | absl/container/internal/raw_hash_set_test.cc | 6 |
4 files changed, 14 insertions, 10 deletions
diff --git a/absl/container/btree_test.cc b/absl/container/btree_test.cc index c52c3231..d7102fe4 100644 --- a/absl/container/btree_test.cc +++ b/absl/container/btree_test.cc @@ -1346,7 +1346,8 @@ void ExpectOperationCounts(const int expected_moves, tracker->ResetCopiesMovesSwaps(); } -#ifdef ABSL_HAVE_ADDRESS_SANITIZER +#if defined(ABSL_HAVE_ADDRESS_SANITIZER) || \ + defined(ABSL_HAVE_HWADDRESS_SANITIZER) constexpr bool kAsan = true; #else constexpr bool kAsan = false; @@ -3079,10 +3080,10 @@ TEST(Btree, InvalidIteratorUse) { if (!BtreeGenerationsEnabled()) GTEST_SKIP() << "Generation validation for iterators is disabled."; - // Invalid memory use can trigger heap-use-after-free in ASan or invalidated - // iterator assertions. + // Invalid memory use can trigger use-after-free in ASan, HWASAN or + // invalidated iterator assertions. constexpr const char *kInvalidMemoryDeathMessage = - "heap-use-after-free|invalidated iterator"; + "use-after-free|invalidated iterator"; { absl::btree_set<int> set; @@ -3411,12 +3412,12 @@ TEST(Btree, InvalidPointerUse) { set.insert(0); const int *ptr = &*set.begin(); set.insert(1); - EXPECT_DEATH(std::cout << *ptr, "heap-use-after-free"); + EXPECT_DEATH(std::cout << *ptr, "use-after-free"); size_t slots_per_node = BtreeNodePeer::GetNumSlotsPerNode<decltype(set)>(); for (int i = 2; i < slots_per_node - 1; ++i) set.insert(i); ptr = &*set.begin(); set.insert(static_cast<int>(slots_per_node)); - EXPECT_DEATH(std::cout << *ptr, "heap-use-after-free"); + EXPECT_DEATH(std::cout << *ptr, "use-after-free"); } template<typename Set> diff --git a/absl/container/internal/btree.h b/absl/container/internal/btree.h index 3526471d..91df57a3 100644 --- a/absl/container/internal/btree.h +++ b/absl/container/internal/btree.h @@ -79,6 +79,7 @@ namespace container_internal { #ifdef ABSL_BTREE_ENABLE_GENERATIONS #error ABSL_BTREE_ENABLE_GENERATIONS cannot be directly set #elif defined(ABSL_HAVE_ADDRESS_SANITIZER) || \ + defined(ABSL_HAVE_HWADDRESS_SANITIZER) || \ defined(ABSL_HAVE_MEMORY_SANITIZER) // When compiled in sanitizer mode, we add generation integers to the nodes and // iterators. When iterators are used, we validate that the container has not @@ -2856,7 +2857,8 @@ inline auto btree<P>::internal_emplace(iterator iter, Args &&...args) } } (void)replaced_node; -#ifdef ABSL_HAVE_ADDRESS_SANITIZER +#if defined(ABSL_HAVE_ADDRESS_SANITIZER) || \ + defined(ABSL_HAVE_HWADDRESS_SANITIZER) if (!replaced_node) { assert(iter.node_->is_leaf()); if (iter.node_->is_root()) { diff --git a/absl/container/internal/raw_hash_set.h b/absl/container/internal/raw_hash_set.h index 9c65984d..b6dc7548 100644 --- a/absl/container/internal/raw_hash_set.h +++ b/absl/container/internal/raw_hash_set.h @@ -234,6 +234,7 @@ namespace container_internal { #ifdef ABSL_SWISSTABLE_ENABLE_GENERATIONS #error ABSL_SWISSTABLE_ENABLE_GENERATIONS cannot be directly set #elif defined(ABSL_HAVE_ADDRESS_SANITIZER) || \ + defined(ABSL_HAVE_HWADDRESS_SANITIZER) || \ defined(ABSL_HAVE_MEMORY_SANITIZER) // When compiled in sanitizer mode, we add generation integers to the backing // array and iterators. In the backing array, we store the generation between diff --git a/absl/container/internal/raw_hash_set_test.cc b/absl/container/internal/raw_hash_set_test.cc index fe000742..f9797f56 100644 --- a/absl/container/internal/raw_hash_set_test.cc +++ b/absl/container/internal/raw_hash_set_test.cc @@ -2218,10 +2218,10 @@ TEST(TableDeathTest, InvalidIteratorAsserts) { EXPECT_DEATH_IF_SUPPORTED(++iter, kErasedDeathMessage); } -// Invalid iterator use can trigger heap-use-after-free in asan, +// Invalid iterator use can trigger use-after-free in asan/hwasan, // use-of-uninitialized-value in msan, or invalidated iterator assertions. constexpr const char* kInvalidIteratorDeathMessage = - "heap-use-after-free|use-of-uninitialized-value|invalidated " + "use-after-free|use-of-uninitialized-value|invalidated " "iterator|Invalid iterator|invalid iterator"; // MSVC doesn't support | in regex. @@ -2579,7 +2579,7 @@ TEST(Table, InvalidReferenceUseCrashesWithSanitizers) { // ptr will become invalidated on rehash. const int64_t* ptr = &*t.begin(); t.insert(++i); - EXPECT_DEATH_IF_SUPPORTED(std::cout << *ptr, "heap-use-after-free") << i; + EXPECT_DEATH_IF_SUPPORTED(std::cout << *ptr, "use-after-free") << i; } } |