From 285fe59bcbef6ee1b4a6e8f760e51ffeda5a2c02 Mon Sep 17 00:00:00 2001 From: dev747368 <48332326+dev747368@users.noreply.github.com> Date: Tue, 5 Aug 2025 17:25:58 +0000 Subject: [PATCH] GP-5911 fix FS & drive letter root dir lookup problem. Looking up "c:/" would treat it as the global "/" root dir. --- .../java/ghidra/formats/gfilesystem/LocalFileSystem.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/LocalFileSystem.java b/Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/LocalFileSystem.java index 00b110f2c3..5d79098b2b 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/LocalFileSystem.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/LocalFileSystem.java @@ -124,7 +124,7 @@ public class LocalFileSystem implements GFileSystem, GFileHashProvider { public GFile getGFile(File f) { List parts = LocalFileSystem.getFilePathParts(f); // [/subdir/subroot/file, /subdir/subroot, /subdir, /] GFile current = rootDir; - for (int i = parts.size() - 2; i >= 0; i--) { + for (int i = parts.size() - (isWindows ? 1 : 2); i >= 0; i--) { File part = parts.get(i); FSRL childFSRL = getLocalFSRL(part); current = @@ -221,6 +221,9 @@ public class LocalFileSystem implements GFileSystem, GFileHashProvider { @Override public GFile lookup(String path, Comparator nameComp) throws IOException { + if (path == null || path.equals(rootDir.getPath() /* should be "/" */)) { + return rootDir; + } File f = lookupFile(null, path, nameComp); return f != null ? getGFile(f) : null; }