Stop tasking when stack guard fails

This commit is contained in:
Alex 2022-11-17 19:09:43 +02:00
parent a9a5b1f64c
commit 13f93b8e21
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD
3 changed files with 10 additions and 1 deletions

View File

@ -34,6 +34,7 @@ static void __attribute__((constructor, no_stack_protector)) __construct_stk_chk
__attribute__((weak, noreturn, no_stack_protector)) void __stack_chk_fail(void)
{
TaskingPanic();
error("Stack smashing detected!");
KPrint("\eFF0000Stack smashing detected!");
#if defined(__amd64__) || defined(__i386__)
@ -49,6 +50,7 @@ __attribute__((weak, noreturn, no_stack_protector)) void __stack_chk_fail(void)
// https://github.com/gcc-mirror/gcc/blob/master/libssp/ssp.c
__attribute__((weak, noreturn, no_stack_protector)) void __chk_fail(void)
{
TaskingPanic();
error("Buffer overflow detected!");
KPrint("\eFF0000Buffer overflow detected!");
for (;;)

View File

@ -79,7 +79,7 @@ EXTERNC void Entry(BootInfo *Info)
}
KPrint("Enabling Interrupts on Bootstrap Processor");
Interrupts::Enable(0);
#if defined(__amd64__)
#if defined(__amd64__)
PowerManager->InitDSDT();
#elif defined(__i386__)
// FIXME: Add ACPI support for i386
@ -101,3 +101,9 @@ EXTERNC void Entry(BootInfo *Info)
KPrint("\e058C19################################");
CPU::Halt(true);
}
EXTERNC void TaskingPanic()
{
if (TaskManager)
TaskManager->Panic();
}

View File

@ -38,6 +38,7 @@ extern Disk::Manager *DiskManager;
EXTERNC void putchar(char c);
EXTERNC void KPrint(const char *format, ...);
EXTERNC void Entry(struct BootInfo *Info);
EXTERNC void TaskingPanic();
EXTERNC void KernelMainThread();
EXTERNC void KernelShutdownThread(bool Reboot);