From 67fd364d03d77231b177c091991c67c397007215 Mon Sep 17 00:00:00 2001 From: Ryan Kurtz Date: Tue, 21 Apr 2026 05:17:38 -0400 Subject: [PATCH] GP-6737: Fixing potential infinite loop in ExportTrie.java --- .../app/util/bin/format/macho/commands/ExportTrie.java | 5 +++++ 1 file changed, 5 insertions(+) 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));