[libc-commits] [libc] b3d024c - [libc] try fixing LlvmLibcStackChkFail.Smash again (#75967)
via libc-commits
libc-commits at lists.llvm.org
Tue Dec 19 13:32:56 PST 2023
Author: Nick Desaulniers
Date: 2023-12-19T13:32:52-08:00
New Revision: b3d024c6737adb87e83193de88af04ec74ddf3ea
URL: https://github.com/llvm/llvm-project/commit/b3d024c6737adb87e83193de88af04ec74ddf3ea
DIFF: https://github.com/llvm/llvm-project/commit/b3d024c6737adb87e83193de88af04ec74ddf3ea.diff
LOG: [libc] try fixing LlvmLibcStackChkFail.Smash again (#75967)
Looks like adding attributes to lambdas wasn't added to ISO C++ until
C++23.
Forget lambdas and just use a static function.
Added:
Modified:
libc/test/src/compiler/stack_chk_guard_test.cpp
Removed:
################################################################################
diff --git a/libc/test/src/compiler/stack_chk_guard_test.cpp b/libc/test/src/compiler/stack_chk_guard_test.cpp
index 6f1bd73b1faa3b..18bdc8f2a6e2ed 100644
--- a/libc/test/src/compiler/stack_chk_guard_test.cpp
+++ b/libc/test/src/compiler/stack_chk_guard_test.cpp
@@ -15,11 +15,13 @@ TEST(LlvmLibcStackChkFail, Death) {
EXPECT_DEATH([] { __stack_chk_fail(); }, WITH_SIGNAL(SIGABRT));
}
+// Disable asan so that it doesn't immediately fail after the memset, but before
+// the stack canary is re-checked.
+[[gnu::no_sanitize_address]] static void smash_stack() {
+ int arr[20];
+ LIBC_NAMESPACE::memset(arr, 0xAA, 2001);
+}
+
TEST(LlvmLibcStackChkFail, Smash) {
- EXPECT_DEATH(
- [] [[gnu::no_sanitize]] {
- int arr[20];
- LIBC_NAMESPACE::memset(arr, 0xAA, 2001);
- },
- WITH_SIGNAL(SIGABRT));
+ EXPECT_DEATH(smash_stack, WITH_SIGNAL(SIGABRT));
}
More information about the libc-commits
mailing list