From d5dbb30ffc81ebb8a6d47b6baef9ddcb954db717 Mon Sep 17 00:00:00 2001 From: Josh Ferrell Date: Wed, 25 Sep 2024 20:52:34 -0400 Subject: Fix PE with invalid string table start failing to load --- view/pe/peview.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/view/pe/peview.cpp b/view/pe/peview.cpp index cfeb63b2..2980d667 100644 --- a/view/pe/peview.cpp +++ b/view/pe/peview.cpp @@ -759,8 +759,12 @@ bool PEView::Init() BinaryReader stringReader(GetParentView(), LittleEndian); uint64_t stringTableBase = header.coffSymbolTable + (header.coffSymbolCount * 18); stringReader.Seek(stringTableBase); - uint32_t stringTableLen = stringReader.Read32(); - if ((stringTableBase + stringTableLen) > GetParentView()->GetEnd()) + uint32_t stringTableLen; + if (!stringReader.TryRead32(stringTableLen)) + { + m_logger->LogError("Cannot resolve section name \"%s\": String table has invalid start", name); + } + else if ((stringTableBase + stringTableLen) > GetParentView()->GetEnd()) { m_logger->LogError("Cannot resolve section name \"%s\": String table is invalid length", name); } -- cgit v1.3.1