diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/commands/SymbolTableCommand.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/commands/SymbolTableCommand.java index f1ccd62e75..48c466a877 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/commands/SymbolTableCommand.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/commands/SymbolTableCommand.java @@ -42,7 +42,7 @@ public class SymbolTableCommand extends LoadCommand { private long stroff; private long strsize; - private List symbols = new ArrayList(); + private List symbols = new ArrayList<>(); /** * Creates and parses a new {@link SymbolTableCommand} @@ -144,7 +144,7 @@ public class SymbolTableCommand extends LoadCommand { (index & DynamicSymbolTableConstants.INDIRECT_SYMBOL_ABS) != 0) { return null; } - if (index > symbols.size()) { + if (index >= symbols.size()) { return null; } return symbols.get(index); diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/MachoProgramBuilder.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/MachoProgramBuilder.java index 2916eaeda8..0051b07db3 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/MachoProgramBuilder.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/MachoProgramBuilder.java @@ -692,7 +692,8 @@ public class MachoProgramBuilder { for (int i = indirectSymbolTableIndex; i < indirectSymbolTableIndex + nSymbols; ++i) { monitor.increment(); int symbolIndex = indirectSymbols.get(i); - NList symbol = symbolTableCommand.getSymbolAt(symbolIndex); + NList symbol = + symbolTableCommand != null ? symbolTableCommand.getSymbolAt(symbolIndex) : null; String name = null; if (symbol != null && !symbol.getString().isBlank()) { name = SymbolUtilities.replaceInvalidChars(symbol.getString(), true);