From cb84c137e511c97085633b250e084929b4aa0951 Mon Sep 17 00:00:00 2001 From: VaDiM Date: Sun, 24 Sep 2023 03:02:08 +0300 Subject: [PATCH] Add exception checking for gzip decompression --- AssetStudio/AssetsManager.cs | 2 +- AssetStudio/ImportHelper.cs | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/AssetStudio/AssetsManager.cs b/AssetStudio/AssetsManager.cs index 1bc3543..f243569 100644 --- a/AssetStudio/AssetsManager.cs +++ b/AssetStudio/AssetsManager.cs @@ -133,7 +133,7 @@ namespace AssetStudio private void LoadFile(FileReader reader) { - switch (reader.FileType) + switch (reader?.FileType) { case FileType.AssetsFile: LoadAssetsFile(reader); diff --git a/AssetStudio/ImportHelper.cs b/AssetStudio/ImportHelper.cs index d66c077..3e8f1a1 100644 --- a/AssetStudio/ImportHelper.cs +++ b/AssetStudio/ImportHelper.cs @@ -53,15 +53,24 @@ namespace AssetStudio public static FileReader DecompressGZip(FileReader reader) { - using (reader) + try { - var stream = new MemoryStream(); - using (var gs = new GZipStream(reader.BaseStream, CompressionMode.Decompress)) + using (reader) { - gs.CopyTo(stream); + var stream = new MemoryStream(); + using (var gs = new GZipStream(reader.BaseStream, CompressionMode.Decompress)) + { + gs.CopyTo(stream); + } + stream.Position = 0; + return new FileReader(reader.FullPath, stream); } - stream.Position = 0; - return new FileReader(reader.FullPath, stream); + } + catch (System.Exception e) + { + Logger.Warning($"Error while decompressing gzip file {reader.FullPath}\r\n{e}"); + reader.Dispose(); + return null; } }