From f10c1ed6cc8b10b3ba53d2149248c5f6c5625977 Mon Sep 17 00:00:00 2001 From: dev747368 <48332326+dev747368@users.noreply.github.com> Date: Wed, 14 Oct 2020 14:44:48 -0400 Subject: [PATCH] GP-254 update 7zip library to 16.02-2.01 --- Ghidra/Features/FileFormats/build.gradle | 4 ++-- .../file/formats/sevenzip/SevenZipFileSystem.java | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Ghidra/Features/FileFormats/build.gradle b/Ghidra/Features/FileFormats/build.gradle index 6f805f2dcf..37d1527f4f 100644 --- a/Ghidra/Features/FileFormats/build.gradle +++ b/Ghidra/Features/FileFormats/build.gradle @@ -23,10 +23,10 @@ dependencies { compile 'org.smali:dexlib:1.4.0' compile 'org.smali:util:1.4.0' - compile 'net.sf.sevenzipjbinding:sevenzipjbinding:9.20-2.00beta' + compile 'net.sf.sevenzipjbinding:sevenzipjbinding:16.02-2.01' compile ':AXMLPrinter2' - runtime 'net.sf.sevenzipjbinding:sevenzipjbinding-all-platforms:9.20-2.00beta' + runtime 'net.sf.sevenzipjbinding:sevenzipjbinding-all-platforms:16.02-2.01' helpPath project(path: ":Base", configuration: 'helpPath') diff --git a/Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/sevenzip/SevenZipFileSystem.java b/Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/sevenzip/SevenZipFileSystem.java index 05e1bcb43e..912f6b3088 100644 --- a/Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/sevenzip/SevenZipFileSystem.java +++ b/Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/sevenzip/SevenZipFileSystem.java @@ -18,6 +18,8 @@ package ghidra.file.formats.sevenzip; import java.io.*; import java.util.*; +import org.apache.commons.io.FilenameUtils; + import ghidra.formats.gfilesystem.*; import ghidra.formats.gfilesystem.annotations.FileSystemInfo; import ghidra.util.Msg; @@ -70,7 +72,13 @@ public class SevenZipFileSystem implements GFileSystem { throw new CancelledException(); } - fsIndexHelper.storeFile(item.getPath(), item.getItemIndex(), item.isFolder(), + String itemPath = item.getPath(); + if (items.length == 1 && itemPath.isBlank()) { + // special case when there is a single unnamed file. + // use the name of the 7zip file itself, minus the extension + itemPath = FilenameUtils.getBaseName(fsrl.getContainer().getName()); + } + fsIndexHelper.storeFile(itemPath, item.getItemIndex(), item.isFolder(), getSize(item), item); } preCacheAll(monitor);