From b24fcc83e829e3f367b88b507daf23e57bce66c2 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Wed, 27 May 2026 16:23:05 -0400 Subject: [ELF] Fix MIPS symbol lookup hang with malformed symbol table entry If we hit a got entry outside the valid regions of memory we can safely assume the tables to be malformed. --- view/elf/elfview.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/view/elf/elfview.cpp b/view/elf/elfview.cpp index c54663d4..d5ff0ef4 100644 --- a/view/elf/elfview.cpp +++ b/view/elf/elfview.cpp @@ -1154,6 +1154,11 @@ bool ElfView::Init() for (uint64_t i = firstMipsSym; i < (m_auxSymbolTable.size / (m_elf32 ? 16 : 24)); i++) { uint64_t gotEntry = gotStart + ((localMipsSyms + i - firstMipsSym) * (m_elf32 ? 4 : 8)); + if (!IsValidOffset(gotEntry)) + { + m_logger->LogWarn("ELF GOT entry %" PRIx64 " is invalid", gotEntry); + break; + } ElfSymbolTableEntry entry; if (!ParseSymbolTableEntry(virtualReader, entry, i, m_auxSymbolTable, m_dynamicStringTable, true)) -- cgit v1.3.1