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.
This commit is contained in:
Andrew Kaster 2021-06-30 22:40:03 -06:00 committed by Andreas Kling
parent f0d562131f
commit d0447f23b8
Notes: sideshowbarker 2024-07-18 10:17:38 +09:00
3 changed files with 11 additions and 8 deletions

View file

@ -1,6 +1,6 @@
[Global]
SkipDirectories=Kernel/Legacy UserEmulator
SkipTests=stack-smash test-web
SkipTests=test-web
NotTestsPattern=.txt|.frm|.inc
[test-js]

View file

@ -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")

View file

@ -4,7 +4,8 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <cstdio>
#include <AK/Format.h>
#include <LibTest/TestCase.h>
// 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;
});
}