diff --git a/Kernel/core/symbols.cpp b/Kernel/core/symbols.cpp index 28292fc8..d0fbcd2b 100644 --- a/Kernel/core/symbols.cpp +++ b/Kernel/core/symbols.cpp @@ -178,6 +178,12 @@ namespace SymbolResolver continue; } + if (unlikely(sym->st_name == (Elf_Word)-1 || sym->st_value == (Elf_Addr)-1 || sym->st_size == (uintptr_t)-1)) + { + error("Symbol %d is invalid", i); + continue; + } + name = (const char *)&StringAddress[Symbols[i].st_name]; if (!vmm.Check((void *)name)) {