diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/commands/ExportTrie.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/commands/ExportTrie.java index 7d03f5fee5..18416292e6 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/commands/ExportTrie.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/commands/ExportTrie.java @@ -89,9 +89,14 @@ public class ExportTrie { * @throws IOException if there was an IO-related error */ private void parseTrie() throws IOException { + Set visited = new HashSet<>(); + visited.add(0); LinkedList remainingNodes = parseNode("", 0); while(!remainingNodes.isEmpty()) { Node parent = remainingNodes.removeFirst(); + if (!visited.add(parent.offset())) { + continue; // skip already-visited offsets + } LinkedList children = parseNode(parent.name, parent.offset); for (Node child : children) { remainingNodes.add(new Node(parent.name + child.name, child.offset));