mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 10:49:34 +02:00
Fixing Ghidra not finding extension modules installed outside of
installation dir.
This commit is contained in:
parent
d70c6c256f
commit
372c0b299c
1 changed files with 23 additions and 2 deletions
|
@ -52,8 +52,6 @@ public class GhidraApplicationLayout extends ApplicationLayout {
|
||||||
// Application installation directory
|
// Application installation directory
|
||||||
applicationInstallationDir = findGhidraApplicationInstallationDir();
|
applicationInstallationDir = findGhidraApplicationInstallationDir();
|
||||||
|
|
||||||
// Modules
|
|
||||||
modules = findGhidraModules();
|
|
||||||
|
|
||||||
// User directories
|
// User directories
|
||||||
userTempDir = ApplicationUtilities.getDefaultUserTempDir(getApplicationProperties());
|
userTempDir = ApplicationUtilities.getDefaultUserTempDir(getApplicationProperties());
|
||||||
|
@ -67,6 +65,9 @@ public class GhidraApplicationLayout extends ApplicationLayout {
|
||||||
|
|
||||||
// Patch directory
|
// Patch directory
|
||||||
patchDir = findPatchDirectory();
|
patchDir = findPatchDirectory();
|
||||||
|
|
||||||
|
// Modules
|
||||||
|
modules = findGhidraModules();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -146,6 +147,26 @@ public class GhidraApplicationLayout extends ApplicationLayout {
|
||||||
Collection<ResourceFile> moduleRootDirectories =
|
Collection<ResourceFile> moduleRootDirectories =
|
||||||
ModuleUtilities.findModuleRootDirectories(applicationRootDirs, new ArrayList<>());
|
ModuleUtilities.findModuleRootDirectories(applicationRootDirs, new ArrayList<>());
|
||||||
|
|
||||||
|
// Find installed extension modules
|
||||||
|
for (ResourceFile extensionInstallDir : extensionInstallationDirs) {
|
||||||
|
File[] extensionModuleDirs =
|
||||||
|
extensionInstallDir.getFile(false).listFiles(d -> d.isDirectory());
|
||||||
|
if (extensionModuleDirs != null) {
|
||||||
|
for (File extensionModuleDir : extensionModuleDirs) {
|
||||||
|
|
||||||
|
// Skip extensions that live in an application root directory...we've already
|
||||||
|
// found those.
|
||||||
|
if (applicationRootDirs.stream()
|
||||||
|
.anyMatch(dir -> FileUtilities.isPathContainedWithin(dir.getFile(false),
|
||||||
|
extensionModuleDir))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
moduleRootDirectories.add(new ResourceFile(extensionModuleDir));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Examine the classpath to look for modules outside of the application root directories.
|
// Examine the classpath to look for modules outside of the application root directories.
|
||||||
// These might exist if Ghidra was launched from an Eclipse project that resides
|
// These might exist if Ghidra was launched from an Eclipse project that resides
|
||||||
// external to the Ghidra installation.
|
// external to the Ghidra installation.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue