diff --git a/Makefile b/Makefile index d2132c4..3385ef9 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,7 @@ VISOR_SOURCES_x86_64 := \ VISOR_SOURCES := \ src/alloc.c \ src/efi.c \ + src/ssp.c \ src/strlcpy.c \ $(VISOR_SOURCES_$(ARCH)) \ # end of sources list diff --git a/config.default.mk b/config.default.mk index 671e91c..4ce1434 100644 --- a/config.default.mk +++ b/config.default.mk @@ -5,11 +5,11 @@ ARCH = x86_64 CROSS_PATH = /usr/bin # C Compiler & Linker commands -CC = gcc -LD = ld +CC = $(CROSS_PATH)/$(ARCH)-linux-gcc +LD = $(CROSS_PATH)/$(ARCH)-linux-ld # Compilation flags -CFLAGS = -std=c17 -Wall -ffreestanding -fpic -nostdlib -fno-stack-protector -fno-stack-check -fshort-wchar -mno-red-zone -maccumulate-outgoing-args -mno-sse -mno-mmx -mno-80387 +CFLAGS = -std=c17 -Wall -ffreestanding -fpic -nostdlib -fstack-protector-all -fshort-wchar -mno-red-zone -maccumulate-outgoing-args -mno-sse -mno-mmx -mno-80387 CPPFLAGS = -Ignuefi/inc -Iinclude LDFLAGS = -shared -Bsymbolic -Lgnuefi -Tgnuefi/elf_$(ARCH)_efi.lds -nostdlib LIBS = -lgnuefi -lefi diff --git a/src/ssp.c b/src/ssp.c new file mode 100644 index 0000000..2fcc36c --- /dev/null +++ b/src/ssp.c @@ -0,0 +1,17 @@ +#include +#include +#include + +#define STACK_CHK_GUARD 0x595e9fbd94fda766 + +uintptr_t __stack_chk_guard = STACK_CHK_GUARD; + +_Noreturn void +__stack_chk_fail(void) +{ + Print(L"stack smashing detected"); + for (;;) { + __asm__ ("cli\n\thlt\n\t" ::); + } +} +