From 0a13b8038750654496ce79bb1d84b29cc5142e9d Mon Sep 17 00:00:00 2001 From: Ryan Kurtz Date: Wed, 10 Jul 2024 06:24:40 -0400 Subject: [PATCH] GP-0: Preventing duplicate classpath entries --- .../src/main/java/ghidra/GhidraClassLoader.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraClassLoader.java b/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraClassLoader.java index ff9f777cc4..d781613067 100644 --- a/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraClassLoader.java +++ b/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraClassLoader.java @@ -18,6 +18,8 @@ package ghidra; import java.io.File; import java.lang.instrument.Instrumentation; import java.net.*; +import java.util.HashSet; +import java.util.Set; import ghidra.util.Msg; @@ -49,6 +51,11 @@ public class GhidraClassLoader extends URLClassLoader { */ public static final String CP_EXT = "java.class.path.ext"; + /** + * Used to prevent duplicate URL's from being added to the classpath + */ + private Set alreadyAdded = new HashSet<>(); + /** * This one-argument constructor is required for the JVM to successfully use this class loader * via the java.system.class.loader system property. @@ -61,6 +68,9 @@ public class GhidraClassLoader extends URLClassLoader { @Override public void addURL(URL url) { + if (!alreadyAdded.add(url)) { + return; + } super.addURL(url); try { System.setProperty(CP,