diff options
author | Elliott Hughes <enh@google.com> | 2022-09-27 22:37:03 +0000 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2022-10-04 00:00:50 +0000 |
commit | b24c89b4df8824ed1b2afc1f6493bff0cc0ea2e5 (patch) | |
tree | ec7eaf7308d22f592a0ca98737897d801df40d7b | |
parent | 46871c040ddc95ebad8b5ee53ff7518b49598e79 (diff) | |
download | bionic-b24c89b4df8824ed1b2afc1f6493bff0cc0ea2e5.tar.gz |
stack_protector_DeathTest#modify_stack_protector: avoid flake.
I've never been able to repro the flake myself (in hundreds of thousands
of runs), but it's certainly possible that a byte of the cookie is
already zero. So let's invert the byte we plan to corrupt rather than
set it to zero.
Bug: http://b/202948861
Test: treehugger
Change-Id: Iccd552fe302d6c01e376819d23c11a308e03acdb
(cherry picked from commit 23ce50c1728c6bc6986e12073d5d3c8ab10d05d0)
-rw-r--r-- | tests/stack_protector_test_helper.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/tests/stack_protector_test_helper.cpp b/tests/stack_protector_test_helper.cpp index fd90b939b..eddd94074 100644 --- a/tests/stack_protector_test_helper.cpp +++ b/tests/stack_protector_test_helper.cpp @@ -19,7 +19,8 @@ __attribute__((noinline)) void modify_stack_protector_test() { // We can't use memset here because it's fortified, and we want to test // the line of defense *after* that. // Without volatile, the generic x86/x86-64 targets don't write to the stack. - volatile char* p; - p = reinterpret_cast<volatile char*>(&p + 1); - *p = '\0'; + // We can't make a constant change, since the existing byte might already have + // had that value. + volatile char* p = reinterpret_cast<volatile char*>(&p + 1); + *p = ~*p; } |