From d0447f23b851b8e13052a35f1cd7de5f4ab44a03 Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Wed, 30 Jun 2021 22:40:03 -0600 Subject: [PATCH] Tests+Base: Convert stack-smash to be LibTest based and stop skipping it Now that the test is converted to be LibTest based, we can remove it from the exclude list in /home/anon/.config/Tests.ini. Prior to this it would crash and fail because it was signaled instead of returning normally with exit code 0. --- Base/home/anon/.config/Tests.ini | 2 +- Tests/LibC/CMakeLists.txt | 1 + .../LibC/{stack-smash.cpp => TestStackSmash.cpp} | 16 +++++++++------- 3 files changed, 11 insertions(+), 8 deletions(-) rename Tests/LibC/{stack-smash.cpp => TestStackSmash.cpp} (64%) diff --git a/Base/home/anon/.config/Tests.ini b/Base/home/anon/.config/Tests.ini index f549dad980..550a26eeba 100644 --- a/Base/home/anon/.config/Tests.ini +++ b/Base/home/anon/.config/Tests.ini @@ -1,6 +1,6 @@ [Global] SkipDirectories=Kernel/Legacy UserEmulator -SkipTests=stack-smash test-web +SkipTests=test-web NotTestsPattern=.txt|.frm|.inc [test-js] diff --git a/Tests/LibC/CMakeLists.txt b/Tests/LibC/CMakeLists.txt index a4f8a4ce0b..3c5dc09d43 100644 --- a/Tests/LibC/CMakeLists.txt +++ b/Tests/LibC/CMakeLists.txt @@ -7,6 +7,7 @@ set(TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/TestLibCDirEnt.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TestLibCInodeWatcher.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TestLibCString.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/TestStackSmash.cpp ) file(GLOB CMD_SOURCES CONFIGURE_DEPENDS "*.cpp") diff --git a/Tests/LibC/stack-smash.cpp b/Tests/LibC/TestStackSmash.cpp similarity index 64% rename from Tests/LibC/stack-smash.cpp rename to Tests/LibC/TestStackSmash.cpp index 6a2a303951..bcea97d501 100644 --- a/Tests/LibC/stack-smash.cpp +++ b/Tests/LibC/TestStackSmash.cpp @@ -4,7 +4,8 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include +#include // Note: Needs to be 'noline' so stack canary isn't optimized out. static void __attribute__((noinline)) smasher(char* string) @@ -24,11 +25,12 @@ static void __attribute__((noinline)) stack_to_smash() smasher(string); } -int main() +TEST_CASE(stack_smash) { - puts("[+] Starting the stack smash..."); - stack_to_smash(); - puts("[+] Stack smash wasn't detected!"); - - return 0; + EXPECT_CRASH("Smash the stack and trigger __stack_chk_fail", [] { + outln("[+] Starting the stack smash..."); + stack_to_smash(); + outln("[+] Stack smash wasn't detected!"); + return Test::Crash::Failure::DidNotCrash; + }); }