diff options
| author | Jordan Wiens <github@psifertex.com> | 2026-02-19 18:15:51 -0500 |
|---|---|---|
| committer | Jordan Wiens <github@psifertex.com> | 2026-02-19 18:15:51 -0500 |
| commit | bcc40473b3660005e83f51150bdc17ae177768dc (patch) | |
| tree | 33b0efde30796fc527893913340faded4ec4d598 /view/elf/elfview.cpp | |
| parent | 1530770981627436259078461823272722710609 (diff) | |
validation for zero sized symbol or string tables
Diffstat (limited to 'view/elf/elfview.cpp')
| -rw-r--r-- | view/elf/elfview.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
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 |
