From bcc40473b3660005e83f51150bdc17ae177768dc Mon Sep 17 00:00:00 2001 From: Jordan Wiens Date: Thu, 19 Feb 2026 18:15:51 -0500 Subject: validation for zero sized symbol or string tables --- view/elf/elfview.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'view/elf/elfview.cpp') diff --git a/view/elf/elfview.cpp b/view/elf/elfview.cpp index 1279dead..a3d60456 100644 --- a/view/elf/elfview.cpp +++ b/view/elf/elfview.cpp @@ -1094,10 +1094,14 @@ bool ElfView::Init() DefineAutoSymbol(new Symbol(DataSymbol, "__elf_hash_table", m_hashHeader, NoBinding)); // Gratuitously create sections for the symbol and string tables if none exist - if (!GetSectionsAt(m_auxSymbolTable.offset).size()) + if (m_auxSymbolTable.size && !GetSectionsAt(m_auxSymbolTable.offset).size()) AddAutoSection(".dynamic_symtab", m_auxSymbolTable.offset, m_auxSymbolTable.size, ReadOnlyDataSectionSemantics); - if (!GetSectionsAt(m_dynamicStringTable.offset).size()) + else if (!m_auxSymbolTable.size) + m_logger->LogWarn("Skipping zero-length .dynamic_symtab section at 0x%" PRIx64, m_auxSymbolTable.offset); + if (m_dynamicStringTable.size && !GetSectionsAt(m_dynamicStringTable.offset).size()) AddAutoSection(".dynamic_strtab", m_dynamicStringTable.offset, m_dynamicStringTable.size, ReadOnlyDataSectionSemantics); + else if (!m_dynamicStringTable.size) + m_logger->LogWarn("Skipping zero-length .dynamic_strtab section at 0x%" PRIx64, m_dynamicStringTable.offset); } // Parse and create types for ELF GNU hash table -- cgit v1.3.1