From 45b91b1818d4b833485e781b4b2bfa882e6d689e Mon Sep 17 00:00:00 2001 From: Ben Demick Date: Thu, 17 Apr 2025 16:35:37 -0400 Subject: [PATCH] Fixes VxWorksSymTab_Finder.java edge case Fixes MemoryAccessException that occurs if a candidate entry goes into invalid memory. --- .../GnuDemangler/ghidra_scripts/VxWorksSymTab_Finder.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Ghidra/Features/GnuDemangler/ghidra_scripts/VxWorksSymTab_Finder.java b/Ghidra/Features/GnuDemangler/ghidra_scripts/VxWorksSymTab_Finder.java index 72bc18be2e..cf2a966bbd 100644 --- a/Ghidra/Features/GnuDemangler/ghidra_scripts/VxWorksSymTab_Finder.java +++ b/Ghidra/Features/GnuDemangler/ghidra_scripts/VxWorksSymTab_Finder.java @@ -415,7 +415,12 @@ public class VxWorksSymTab_Finder extends GhidraScript { // Test is weak. //------------------------------------------------------------------------ private boolean isSymTblEntry(Address entry, VxSymbol vxSymbol) throws Exception { - + + // Make sure there's data for the symbol + if ( !isAddress(entry.getOffset() + vxSymbol.length() - 1) ) { + return false; + } + // First dword must be null or a valid ptr (typically into the sym table) long value = getInt(entry) & 0xffffffffL; if ((value != 0) && !isAddress(value)) {