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
|
||||
applicationInstallationDir = findGhidraApplicationInstallationDir();
|
||||
|
||||
// Modules
|
||||
modules = findGhidraModules();
|
||||
|
||||
// User directories
|
||||
userTempDir = ApplicationUtilities.getDefaultUserTempDir(getApplicationProperties());
|
||||
|
@ -67,6 +65,9 @@ public class GhidraApplicationLayout extends ApplicationLayout {
|
|||
|
||||
// Patch directory
|
||||
patchDir = findPatchDirectory();
|
||||
|
||||
// Modules
|
||||
modules = findGhidraModules();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -146,6 +147,26 @@ public class GhidraApplicationLayout extends ApplicationLayout {
|
|||
Collection<ResourceFile> moduleRootDirectories =
|
||||
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.
|
||||
// These might exist if Ghidra was launched from an Eclipse project that resides
|
||||
// external to the Ghidra installation.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue