From a4771dbd8a34980a6b41c595c1c07d1d0a1e1e2c Mon Sep 17 00:00:00 2001 From: Derek Mauro Date: Tue, 1 Aug 2023 10:33:06 -0700 Subject: InlinedVector: Disable CFI checking on the const GetInlinedData() path as well. Some empty cases can trigger this. See also: https://clang.llvm.org/docs/ControlFlowIntegrity.html#bad-cast-checking. PiperOrigin-RevId: 552846765 Change-Id: I6adb3c0c73efec841ffe8fdac4342f641c68ddbe --- absl/container/inlined_vector_test.cc | 6 ++++++ absl/container/internal/inlined_vector.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'absl') diff --git a/absl/container/inlined_vector_test.cc b/absl/container/inlined_vector_test.cc index d9946b2a..b9a79f5b 100644 --- a/absl/container/inlined_vector_test.cc +++ b/absl/container/inlined_vector_test.cc @@ -1639,6 +1639,12 @@ TEST(DynamicVec, EmplaceBackAfterHeapAllocation) { EXPECT_EQ(v.size(), 1u); } +TEST(DynamicVec, EmptyIteratorComparison) { + DynamicVec v; + EXPECT_EQ(v.begin(), v.end()); + EXPECT_EQ(v.cbegin(), v.cend()); +} + TEST(AllocatorSupportTest, Constructors) { using MyAlloc = CountingAllocator; using AllocVec = absl::InlinedVector; diff --git a/absl/container/internal/inlined_vector.h b/absl/container/internal/inlined_vector.h index cdfd868e..b2a602db 100644 --- a/absl/container/internal/inlined_vector.h +++ b/absl/container/internal/inlined_vector.h @@ -400,7 +400,7 @@ class Storage { return reinterpret_cast>(data_.inlined.inlined_data); } - ConstPointer GetInlinedData() const { + ABSL_ATTRIBUTE_NO_SANITIZE_CFI ConstPointer GetInlinedData() const { return reinterpret_cast>(data_.inlined.inlined_data); } -- cgit v1.2.3