Skip to content

Commit 4683004

Browse files
committed
[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.
1 parent 4166ad1 commit 4683004

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

view/elf/elfview.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,6 +1154,11 @@ bool ElfView::Init()
11541154
for (uint64_t i = firstMipsSym; i < (m_auxSymbolTable.size / (m_elf32 ? 16 : 24)); i++)
11551155
{
11561156
uint64_t gotEntry = gotStart + ((localMipsSyms + i - firstMipsSym) * (m_elf32 ? 4 : 8));
1157+
if (!IsValidOffset(gotEntry))
1158+
{
1159+
m_logger->LogWarn("ELF GOT entry %" PRIx64 " is invalid", gotEntry);
1160+
break;
1161+
}
11571162

11581163
ElfSymbolTableEntry entry;
11591164
if (!ParseSymbolTableEntry(virtualReader, entry, i, m_auxSymbolTable, m_dynamicStringTable, true))

0 commit comments

Comments
 (0)