From 09175677d192f01c0afc2501d21a2cf8901989ac Mon Sep 17 00:00:00 2001 From: dev747368 <48332326+dev747368@users.noreply.github.com> Date: Wed, 14 Sep 2022 17:39:41 +0000 Subject: [PATCH] GP-2550 don't fail when 000admin directory is missing --- .../java/pdb/symbolserver/SymbolServerService.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Ghidra/Features/PDB/src/main/java/pdb/symbolserver/SymbolServerService.java b/Ghidra/Features/PDB/src/main/java/pdb/symbolserver/SymbolServerService.java index ce91f73c2d..bc03366cc0 100644 --- a/Ghidra/Features/PDB/src/main/java/pdb/symbolserver/SymbolServerService.java +++ b/Ghidra/Features/PDB/src/main/java/pdb/symbolserver/SymbolServerService.java @@ -15,11 +15,12 @@ */ package pdb.symbolserver; -import java.io.File; -import java.io.IOException; import java.util.*; import java.util.stream.Collectors; +import java.io.File; +import java.io.IOException; + import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; @@ -254,8 +255,13 @@ public class SymbolServerService { if (SymbolStore.isCompressedFilename(symbolFileLocation.getPath())) { File cabFile = localSymbolStore.getFile(symbolFileLocation.getPath()); - File temporaryExtractFile = new File(symbolStore.getAdminDir(), - "ghidra_cab_extract_tmp_" + System.currentTimeMillis()); + File adminDir = symbolStore.getAdminDir(); + if (!adminDir.isDirectory()) { + // if the admin dir is missing, use the cab file's directory + adminDir = cabFile.getParentFile(); + } + File temporaryExtractFile = + new File(adminDir, "ghidra_cab_extract_tmp_" + System.currentTimeMillis()); Msg.debug(this, logPrefix() + ": decompressing file " + symbolFileLocation.getLocationStr());