diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/script/GhidraScript.java b/Ghidra/Features/Base/src/main/java/ghidra/app/script/GhidraScript.java index 0bf7597429..1f486a8a40 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/script/GhidraScript.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/script/GhidraScript.java @@ -371,7 +371,7 @@ public abstract class GhidraScript extends FlatProgramAPI { } @Override - protected DomainFolder getProjectRootFolder() { + public DomainFolder getProjectRootFolder() { if (isRunningHeadless()) { Project project = state.getProject(); ProjectData projectData = project.getProjectData(); diff --git a/Ghidra/Features/Base/src/main/java/ghidra/program/flatapi/FlatProgramAPI.java b/Ghidra/Features/Base/src/main/java/ghidra/program/flatapi/FlatProgramAPI.java index dfcb898367..222b3079b7 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/program/flatapi/FlatProgramAPI.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/program/flatapi/FlatProgramAPI.java @@ -2473,7 +2473,7 @@ public class FlatProgramAPI { * the root domain folder. * @return the root domain folder of the current project */ - protected DomainFolder getProjectRootFolder() { + public DomainFolder getProjectRootFolder() { Project project = AppInfo.getActiveProject(); ProjectData projectData = project.getProjectData(); DomainFolder folder = projectData.getRootFolder(); diff --git a/Ghidra/Features/Python/src/main/java/ghidra/python/GhidraPythonInterpreter.java b/Ghidra/Features/Python/src/main/java/ghidra/python/GhidraPythonInterpreter.java index f6feac4f15..8c3deb4672 100644 --- a/Ghidra/Features/Python/src/main/java/ghidra/python/GhidraPythonInterpreter.java +++ b/Ghidra/Features/Python/src/main/java/ghidra/python/GhidraPythonInterpreter.java @@ -69,11 +69,6 @@ public class GhidraPythonInterpreter extends InteractiveInterpreter { // Setup python cache directory PythonUtils.setupPythonCacheDir(TaskMonitor.DUMMY); - // Enable protected java methods to be accessed from python sub-classes. - // This is necessary to be able to call protected GhidraScript/FlatProgram API - // methods from a python script. - System.setProperty("python.security.respectJavaAccessibility", "false"); - // Indicate that we've initialized the python environment, which should // only happen once. pythonInitialized = true; @@ -348,12 +343,16 @@ public class GhidraPythonInterpreter extends InteractiveInterpreter { } } - // Add public and protected methods (only once). Ignore inner classes. + // Add public methods (only once). Ignore inner classes. + // + // NOTE: We currently do not have a way to safely add protected methods. Disabling + // python.security.respectJavaAccessibility and adding in protected methods in the below + // loop caused an InaccessibleObjectException for some users (relating to core Java + // modules, not the GhidraScript class hierarchy). if (!scriptMethodsInjected) { for (Method method : scriptClass.getDeclaredMethods()) { if (!method.getName().contains("$") && - (Modifier.isPublic(method.getModifiers()) || - Modifier.isProtected(method.getModifiers()))) { + Modifier.isPublic(method.getModifiers())) { method.setAccessible(true); setMethod(script, method); }