From 0268713960caffcb4a0cad17c46201604c75a019 Mon Sep 17 00:00:00 2001 From: avao Date: Tue, 13 Oct 2020 19:58:11 +0100 Subject: [PATCH] UT and Fix for: Index out of range exception from gzip #532 --- src/SharpCompress/Compressors/Deflate/GZipStream.cs | 11 +---------- tests/SharpCompress.Test/GZip/GZipWriterTests.cs | 13 +++++++++++++ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/SharpCompress/Compressors/Deflate/GZipStream.cs b/src/SharpCompress/Compressors/Deflate/GZipStream.cs index beb4f74d1..def36904b 100644 --- a/src/SharpCompress/Compressors/Deflate/GZipStream.cs +++ b/src/SharpCompress/Compressors/Deflate/GZipStream.cs @@ -384,16 +384,7 @@ public override void Write(byte[] buffer, int offset, int count) if (_fileName.Contains("\\")) { // trim any leading path - int length = _fileName.Length; - int num = length; - while (--num >= 0) - { - char c = _fileName[num]; - if (c == '\\') - { - _fileName = _fileName.Substring(num + 1, length - num - 1); - } - } + _fileName = Path.GetFileName(_fileName); } } } diff --git a/tests/SharpCompress.Test/GZip/GZipWriterTests.cs b/tests/SharpCompress.Test/GZip/GZipWriterTests.cs index f9edbb52d..5c109bd5e 100644 --- a/tests/SharpCompress.Test/GZip/GZipWriterTests.cs +++ b/tests/SharpCompress.Test/GZip/GZipWriterTests.cs @@ -49,5 +49,18 @@ public void GZip_Writer_Generic_Bad_Compression() } }); } + + [Fact] + public void GZip_Writer_Entry_Path_With_Dir() + { + using (Stream stream = File.Open(Path.Combine(SCRATCH_FILES_PATH, "Tar.tar.gz"), FileMode.OpenOrCreate, FileAccess.Write)) + using (var writer = new GZipWriter(stream)) + { + var path = Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar"); + writer.Write(path, path); //covers issue #532 + } + CompareArchivesByPath(Path.Combine(SCRATCH_FILES_PATH, "Tar.tar.gz"), + Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")); + } } }