From 56a49cb101f6b92a7fbf276847e51d93d0f69748 Mon Sep 17 00:00:00 2001 From: Danyy427 <56359485+Danyy427@users.noreply.github.com> Date: Wed, 30 Mar 2022 14:24:39 +0300 Subject: [PATCH 01/21] Added test for extracting zip files with invalid characters in Windows --- .../tests/ZipFile.Extract.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs index 36dafcd259fe39..8ab7db2b2903fa 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs @@ -103,6 +103,23 @@ public void Windows_ZipWithInvalidFileNames_ThrowsArgumentException(string zipNa AssertExtensions.Throws("path", null, () => ZipFile.ExtractToDirectory(compat(zipName) + ".zip", GetTestFilePath())); } + /// + /// This test checks whether or not ZipFile.ExtractToDirectory() is capable of handling filenames + /// which contain invalid path characters in Windows. + /// + [Theory] + [InlineData("InvalidWindowsFileNameChars.zip", "Test______________________________________.txt")] + [InlineData("InvalidWindowsFileNameChars.zip", "Test______________________________________/TestText1______________________________________.txt")] + [InlineData("InvalidWindowsFileNameChars.zip", "TestEmpty")] + [InlineData("InvalidWindowsFileNameChars.zip", "Test/normalText.txt")] + [PlatformSpecific(TestPlatforms.Windows)] + public void Windows_ZipWithInvalidFileNames(string zipFile, string testPath) + { + var testDirectory = GetTestFilePath(); + ZipFile.ExtractToDirectory(compat(zipFile), testDirectory); + Assert.True(File.Exists(testDirectory + testPath)); + } + /// /// This test ensures that a zipfile with path names that are invalid to this OS will throw errors /// when an attempt is made to extract them. From 682dbe3765d9efb2d963eff5797fff60753c845c Mon Sep 17 00:00:00 2001 From: Danyy427 <56359485+Danyy427@users.noreply.github.com> Date: Wed, 30 Mar 2022 14:40:24 +0300 Subject: [PATCH 02/21] Removed faulty test case --- .../System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs index 8ab7db2b2903fa..97d267486fa198 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs @@ -110,7 +110,6 @@ public void Windows_ZipWithInvalidFileNames_ThrowsArgumentException(string zipNa [Theory] [InlineData("InvalidWindowsFileNameChars.zip", "Test______________________________________.txt")] [InlineData("InvalidWindowsFileNameChars.zip", "Test______________________________________/TestText1______________________________________.txt")] - [InlineData("InvalidWindowsFileNameChars.zip", "TestEmpty")] [InlineData("InvalidWindowsFileNameChars.zip", "Test/normalText.txt")] [PlatformSpecific(TestPlatforms.Windows)] public void Windows_ZipWithInvalidFileNames(string zipFile, string testPath) From ebac56de29dfcc2b287a08178a859eb3226a28c6 Mon Sep 17 00:00:00 2001 From: Danyy427 <56359485+Danyy427@users.noreply.github.com> Date: Wed, 30 Mar 2022 19:43:54 +0300 Subject: [PATCH 03/21] Removed redundant test cases, Added contents of the InvalidWindowsFileNameChars.zip --- .../tests/ZipFile.Extract.cs | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs index 97d267486fa198..7d2d28ebf94c6c 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs @@ -106,17 +106,25 @@ public void Windows_ZipWithInvalidFileNames_ThrowsArgumentException(string zipNa /// /// This test checks whether or not ZipFile.ExtractToDirectory() is capable of handling filenames /// which contain invalid path characters in Windows. + /// Archive: InvalidWindowsFileNameChars.zip + /// Length Date Time Name + /// --------- ---------- ----- ---- + /// 0 2022-03-27 13:44 Test/ + /// 12 2022-03-27 13:44 Test/normalText.txt + /// 0 2022-03-27 13:44 Test"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_/ + /// 14 2022-03-27 13:44 Test"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_/TestText1"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_.txt + /// 0 2022-03-27 13:44 TestEmpty/ + /// 14 2022-03-27 13:44 TestText"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_.txt /// - [Theory] - [InlineData("InvalidWindowsFileNameChars.zip", "Test______________________________________.txt")] - [InlineData("InvalidWindowsFileNameChars.zip", "Test______________________________________/TestText1______________________________________.txt")] - [InlineData("InvalidWindowsFileNameChars.zip", "Test/normalText.txt")] + [Fact] [PlatformSpecific(TestPlatforms.Windows)] - public void Windows_ZipWithInvalidFileNames(string zipFile, string testPath) + public void Windows_ZipWithInvalidFileNames() { var testDirectory = GetTestFilePath(); - ZipFile.ExtractToDirectory(compat(zipFile), testDirectory); - Assert.True(File.Exists(testDirectory + testPath)); + ZipFile.ExtractToDirectory(compat("InvalidWindowsFileNameChars.zip"), testDirectory); + Assert.True(File.Exists(testDirectory + "Test______________________________________.txt")); + Assert.True(File.Exists(testDirectory + "Test______________________________________/TestText1______________________________________.txt")); + Assert.True(File.Exists(testDirectory + "Test/normalText.txt")); } /// From feac6a7af293a698a3713cc1f8eebe8e8aed41f0 Mon Sep 17 00:00:00 2001 From: Danyy427 <56359485+Danyy427@users.noreply.github.com> Date: Wed, 30 Mar 2022 20:44:39 +0300 Subject: [PATCH 04/21] Replaced "+"s to Path.Combine for forming the test file path. --- .../System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs index 7d2d28ebf94c6c..b3dce588a8056c 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs @@ -122,9 +122,9 @@ public void Windows_ZipWithInvalidFileNames() { var testDirectory = GetTestFilePath(); ZipFile.ExtractToDirectory(compat("InvalidWindowsFileNameChars.zip"), testDirectory); - Assert.True(File.Exists(testDirectory + "Test______________________________________.txt")); - Assert.True(File.Exists(testDirectory + "Test______________________________________/TestText1______________________________________.txt")); - Assert.True(File.Exists(testDirectory + "Test/normalText.txt")); + Assert.True(File.Exists(Path.Combine(testDirectory, "Test______________________________________.txt"))); + Assert.True(File.Exists(Path.Combine(testDirectory, "Test______________________________________/TestText1______________________________________.txt"))); + Assert.True(File.Exists(Path.Combine(testDirectory, "Test/normalText.txt"))); } /// From b8afbef8b52d8e38a4f573185edab83ca275b466 Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Wed, 30 Mar 2022 12:24:43 -0600 Subject: [PATCH 05/21] Update src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs --- .../tests/ZipFile.Extract.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs index b3dce588a8056c..9fa8855175cbf5 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs @@ -107,14 +107,12 @@ public void Windows_ZipWithInvalidFileNames_ThrowsArgumentException(string zipNa /// This test checks whether or not ZipFile.ExtractToDirectory() is capable of handling filenames /// which contain invalid path characters in Windows. /// Archive: InvalidWindowsFileNameChars.zip - /// Length Date Time Name - /// --------- ---------- ----- ---- - /// 0 2022-03-27 13:44 Test/ - /// 12 2022-03-27 13:44 Test/normalText.txt - /// 0 2022-03-27 13:44 Test"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_/ - /// 14 2022-03-27 13:44 Test"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_/TestText1"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_.txt - /// 0 2022-03-27 13:44 TestEmpty/ - /// 14 2022-03-27 13:44 TestText"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_.txt + /// Test/ + /// Test/normalText.txt + /// Test"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_/ + /// Test"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_/TestText1"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_.txt + /// TestEmpty/ + /// TestText"<>|^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_.txt /// [Fact] [PlatformSpecific(TestPlatforms.Windows)] From 1e9ba606fb74291c95831a3dc1a16e067bf8a86e Mon Sep 17 00:00:00 2001 From: Danyy427 Date: Fri, 1 Apr 2022 01:33:55 +0300 Subject: [PATCH 06/21] Added code to use ValidFullName across several files --- .../IO/Compression/ZipFileValidName_Unix.cs | 16 +++++++++++++++ .../Compression/ZipFileValidName_Windows.cs | 20 +++++++++++++++++++ .../src/System.IO.Compression.ZipFile.csproj | 15 +++++++++++--- ...pFileExtensions.ZipArchiveEntry.Extract.cs | 2 +- .../src/System.IO.Compression.csproj | 6 +++++- 5 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Unix.cs create mode 100644 src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs diff --git a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Unix.cs b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Unix.cs new file mode 100644 index 00000000000000..db66acbaae43a1 --- /dev/null +++ b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Unix.cs @@ -0,0 +1,16 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.IO.Compression +{ + public partial class ZipArchiveEntry + { + internal string ValidFullName + { + get + { + return FullName; + } + } + } +} diff --git a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs new file mode 100644 index 00000000000000..60b3f7fb161ac6 --- /dev/null +++ b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs @@ -0,0 +1,20 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Text; + +namespace System.IO.Compression +{ + public partial class ZipArchiveEntry + { + internal string ValidFullName + { + get + { + // TODO: Add Sanitization + return FullName; + + } + } + } +} diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj index de869f13e93532..85fb93f5cd5210 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj +++ b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj @@ -1,7 +1,7 @@ - + true - $(NetCoreAppCurrent)-Unix;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent) + $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Unix;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent) enable @@ -16,10 +16,19 @@ - + + + + + + + + true $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Unix;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent) @@ -48,6 +48,8 @@ + @@ -56,6 +58,8 @@ Link="Common\Interop\Unix\Interop.Libraries.cs" /> + From eeac1785c47d2c099b8fc2bdf1c21ae79707ccf2 Mon Sep 17 00:00:00 2001 From: Danyy427 Date: Fri, 1 Apr 2022 01:42:18 +0300 Subject: [PATCH 07/21] Removed weird character --- .../src/System.IO.Compression.ZipFile.csproj | 2 +- .../System.IO.Compression/src/System.IO.Compression.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj index 85fb93f5cd5210..b512c977c90d7e 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj +++ b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj @@ -1,4 +1,4 @@ - + true $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Unix;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent) diff --git a/src/libraries/System.IO.Compression/src/System.IO.Compression.csproj b/src/libraries/System.IO.Compression/src/System.IO.Compression.csproj index 3e58a4a24ef728..275bda06ed9b31 100644 --- a/src/libraries/System.IO.Compression/src/System.IO.Compression.csproj +++ b/src/libraries/System.IO.Compression/src/System.IO.Compression.csproj @@ -1,4 +1,4 @@ - + true $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Unix;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent) From 6fbf14ddcc8594a9deedab5dc754916551f3fe7b Mon Sep 17 00:00:00 2001 From: Danyy427 Date: Fri, 1 Apr 2022 17:40:28 +0300 Subject: [PATCH 08/21] Added Sanitization --- .../IO/Compression/ZipFileValidName_Windows.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs index 60b3f7fb161ac6..999fb437fd2a3d 100644 --- a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs +++ b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs @@ -11,9 +11,17 @@ internal string ValidFullName { get { - // TODO: Add Sanitization - return FullName; - + StringBuilder builder = new StringBuilder(this.FullName); + for (int i = 0; i < FullName.lenght; i++) + { + if ((int)builder[i] >= 0 || (int)builder[i] < 32 || + builder[i] == '?'|| builder[i] == ':' || + builder[i] == '*') + { + builder[i] = '_'; + } + } + return builder.ToString(); } } } From a36d34412c4c3882b0b7e1fe297f05b7db71b253 Mon Sep 17 00:00:00 2001 From: Danyy427 Date: Fri, 1 Apr 2022 17:56:37 +0300 Subject: [PATCH 09/21] Fixed Typo --- .../src/System/IO/Compression/ZipFileValidName_Windows.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs index 999fb437fd2a3d..a741d27ac3d481 100644 --- a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs +++ b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs @@ -12,7 +12,7 @@ internal string ValidFullName get { StringBuilder builder = new StringBuilder(this.FullName); - for (int i = 0; i < FullName.lenght; i++) + for (int i = 0; i < FullName.Length; i++) { if ((int)builder[i] >= 0 || (int)builder[i] < 32 || builder[i] == '?'|| builder[i] == ':' || From f55c3a0047bd5e7913406116c754141c1b586d8f Mon Sep 17 00:00:00 2001 From: Danyy427 <56359485+Danyy427@users.noreply.github.com> Date: Sat, 2 Apr 2022 20:23:33 +0300 Subject: [PATCH 10/21] Fixed wrong if statement --- .../src/System/IO/Compression/ZipFileValidName_Windows.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs index a741d27ac3d481..1087ba0efcf543 100644 --- a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs +++ b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs @@ -14,7 +14,7 @@ internal string ValidFullName StringBuilder builder = new StringBuilder(this.FullName); for (int i = 0; i < FullName.Length; i++) { - if ((int)builder[i] >= 0 || (int)builder[i] < 32 || + if (((int)builder[i] >= 0 && (int)builder[i] < 32) || builder[i] == '?'|| builder[i] == ':' || builder[i] == '*') { From db5102bd2a0c22fe5e3b001695ed7b5ac0d4820f Mon Sep 17 00:00:00 2001 From: Danyy427 <56359485+Danyy427@users.noreply.github.com> Date: Sat, 2 Apr 2022 20:40:05 +0300 Subject: [PATCH 11/21] Fixed wrong filename in test --- .../System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs index 9fa8855175cbf5..ef1869aeca43f7 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs @@ -120,7 +120,7 @@ public void Windows_ZipWithInvalidFileNames() { var testDirectory = GetTestFilePath(); ZipFile.ExtractToDirectory(compat("InvalidWindowsFileNameChars.zip"), testDirectory); - Assert.True(File.Exists(Path.Combine(testDirectory, "Test______________________________________.txt"))); + Assert.True(File.Exists(Path.Combine(testDirectory, "TestText______________________________________.txt"))); Assert.True(File.Exists(Path.Combine(testDirectory, "Test______________________________________/TestText1______________________________________.txt"))); Assert.True(File.Exists(Path.Combine(testDirectory, "Test/normalText.txt"))); } From dc7a5fa706c1befe6afa8d6e1c18a699f8fa0dde Mon Sep 17 00:00:00 2001 From: Danyy427 Date: Sat, 2 Apr 2022 20:51:52 +0300 Subject: [PATCH 12/21] Added sanitization as a method The tests added pass with this build --- .../IO/Compression/ZipFileValidName_Unix.cs | 16 ----------- .../Compression/ZipFileValidName_Windows.cs | 28 ------------------- .../src/System.IO.Compression.ZipFile.csproj | 10 ++----- ...pFileExtensions.ZipArchiveEntry.Extract.cs | 2 +- .../Compression/ZipFileValidFullName_Unix.cs | 23 +++++++++++++++ .../Compression/ZipFileValidName_Windows.cs | 28 +++++++++++++++++++ .../tests/ZipFile.Extract.cs | 2 +- .../src/System.IO.Compression.csproj | 4 --- 8 files changed, 56 insertions(+), 57 deletions(-) delete mode 100644 src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Unix.cs delete mode 100644 src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs create mode 100644 src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidFullName_Unix.cs create mode 100644 src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidName_Windows.cs diff --git a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Unix.cs b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Unix.cs deleted file mode 100644 index db66acbaae43a1..00000000000000 --- a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Unix.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -namespace System.IO.Compression -{ - public partial class ZipArchiveEntry - { - internal string ValidFullName - { - get - { - return FullName; - } - } - } -} diff --git a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs b/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs deleted file mode 100644 index a741d27ac3d481..00000000000000 --- a/src/libraries/Common/src/System/IO/Compression/ZipFileValidName_Windows.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Text; - -namespace System.IO.Compression -{ - public partial class ZipArchiveEntry - { - internal string ValidFullName - { - get - { - StringBuilder builder = new StringBuilder(this.FullName); - for (int i = 0; i < FullName.Length; i++) - { - if ((int)builder[i] >= 0 || (int)builder[i] < 32 || - builder[i] == '?'|| builder[i] == ':' || - builder[i] == '*') - { - builder[i] = '_'; - } - } - return builder.ToString(); - } - } - } -} diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj index b512c977c90d7e..5875410c5ea5fb 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj +++ b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj @@ -17,18 +17,13 @@ Link="Common\System\IO\PathInternal.CaseSensitivity.cs" /> - - - + + - + diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchiveEntry.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchiveEntry.Extract.cs index a85c1690cbad98..f3cf37712c54ae 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchiveEntry.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchiveEntry.Extract.cs @@ -96,7 +96,7 @@ internal static void ExtractRelativeToDirectory(this ZipArchiveEntry source!!, s if (!destinationDirectoryFullPath.EndsWith(Path.DirectorySeparatorChar)) destinationDirectoryFullPath += Path.DirectorySeparatorChar; - string fileDestinationPath = Path.GetFullPath(Path.Combine(destinationDirectoryFullPath, source.ValidFullName)); + string fileDestinationPath = Path.GetFullPath(Path.Combine(destinationDirectoryFullPath, SanitizeZipFilePath(source.FullName))); if (!fileDestinationPath.StartsWith(destinationDirectoryFullPath, PathInternal.StringComparison)) throw new IOException(SR.IO_ExtractingResultsInOutside); diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidFullName_Unix.cs b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidFullName_Unix.cs new file mode 100644 index 00000000000000..0990b3c6f183bd --- /dev/null +++ b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidFullName_Unix.cs @@ -0,0 +1,23 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Text; + +namespace System.IO.Compression +{ + public static partial class ZipFileExtensions + { + internal static string SanitizeZipFilePath(string zipPath) + { + StringBuilder builder = new StringBuilder(zipPath); + for (int i = 0; i < zipPath.Length; i++) + { + if ((int)builder[i] == 0) + { + builder[i] = '_'; + } + } + return builder.ToString(); + } + } +} diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidName_Windows.cs b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidName_Windows.cs new file mode 100644 index 00000000000000..0ef3ce09f272b9 --- /dev/null +++ b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidName_Windows.cs @@ -0,0 +1,28 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + + +using System.Text; + +namespace System.IO.Compression +{ + public static partial class ZipFileExtensions + { + internal static string SanitizeZipFilePath(string zipPath) + { + StringBuilder builder = new StringBuilder(zipPath); + for (int i = 0; i < zipPath.Length; i++) + { + if (((int)builder[i] >= 0 && (int)builder[i] < 32) || + builder[i] == '?' || builder[i] == ':' || + builder[i] == '*' || builder[i] == '\\' || + builder[i] == '"' || builder[i] == '<' || + builder[i] == '>' || builder[i] == '|') + { + builder[i] = '_'; + } + } + return builder.ToString(); + } + } +} diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs index 9fa8855175cbf5..ef1869aeca43f7 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs @@ -120,7 +120,7 @@ public void Windows_ZipWithInvalidFileNames() { var testDirectory = GetTestFilePath(); ZipFile.ExtractToDirectory(compat("InvalidWindowsFileNameChars.zip"), testDirectory); - Assert.True(File.Exists(Path.Combine(testDirectory, "Test______________________________________.txt"))); + Assert.True(File.Exists(Path.Combine(testDirectory, "TestText______________________________________.txt"))); Assert.True(File.Exists(Path.Combine(testDirectory, "Test______________________________________/TestText1______________________________________.txt"))); Assert.True(File.Exists(Path.Combine(testDirectory, "Test/normalText.txt"))); } diff --git a/src/libraries/System.IO.Compression/src/System.IO.Compression.csproj b/src/libraries/System.IO.Compression/src/System.IO.Compression.csproj index 275bda06ed9b31..4d5e69f94d8ab3 100644 --- a/src/libraries/System.IO.Compression/src/System.IO.Compression.csproj +++ b/src/libraries/System.IO.Compression/src/System.IO.Compression.csproj @@ -48,8 +48,6 @@ - @@ -58,8 +56,6 @@ Link="Common\Interop\Unix\Interop.Libraries.cs" /> - From 46b335bb6e7ee89a5c6b4402ad905db325586f15 Mon Sep 17 00:00:00 2001 From: Danyy427 Date: Fri, 8 Apr 2022 21:40:22 +0300 Subject: [PATCH 13/21] Fixed tests that didn't pass --- .../Compression/ZipFileValidName_Windows.cs | 6 +-- .../tests/ZipFile.Create.cs | 14 +++++- .../tests/ZipFile.Extract.cs | 45 ++++++++----------- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidName_Windows.cs b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidName_Windows.cs index 0ef3ce09f272b9..6ab389dce61095 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidName_Windows.cs +++ b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidName_Windows.cs @@ -15,9 +15,9 @@ internal static string SanitizeZipFilePath(string zipPath) { if (((int)builder[i] >= 0 && (int)builder[i] < 32) || builder[i] == '?' || builder[i] == ':' || - builder[i] == '*' || builder[i] == '\\' || - builder[i] == '"' || builder[i] == '<' || - builder[i] == '>' || builder[i] == '|') + builder[i] == '*' || builder[i] == '"' || + builder[i] == '<' || builder[i] == '>' || + builder[i] == '|') { builder[i] = '_'; } diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs index 18768b5a592fcd..42633078e57cb7 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs @@ -428,9 +428,19 @@ public async Task UpdateAddFile() public void Windows_ZipWithInvalidFileNames_ThrowsException(string zipName, string paramName) { if (paramName == null) - Assert.Throws(() => ZipFile.ExtractToDirectory(compat(zipName) + ".zip", GetTestFilePath())); + { + string tempDirectory = GetTestFilePath(); + ZipFile.ExtractToDirectory(compat(zipName) + ".zip", tempDirectory); + + Assert.True(File.Exists(Path.Combine(tempDirectory, "aa_b_d"))); + } else - AssertExtensions.Throws(paramName, null, () => ZipFile.ExtractToDirectory(compat(zipName) + ".zip", GetTestFilePath())); + { + string tempDirectory = GetTestFilePath(); + ZipFile.ExtractToDirectory(compat(zipName) + ".zip", tempDirectory); + + Assert.True(File.Exists(Path.Combine(tempDirectory, "a_6b6d"))); + } } private static async Task UpdateArchive(ZipArchive archive, string installFile, string entryName) diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs index ef1869aeca43f7..d8c7fd75682682 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs @@ -70,9 +70,12 @@ public void ExtractOutOfRoot(string entryName) [InlineData("NullCharFileName_FromWindows")] [InlineData("NullCharFileName_FromUnix")] [PlatformSpecific(TestPlatforms.AnyUnix)] // Checks Unix-specific invalid file path - public void Unix_ZipWithInvalidFileNames_ThrowsArgumentException(string zipName) + public void Unix_ZipWithInvalidFileNames(string zipName) { - AssertExtensions.Throws("path", () => ZipFile.ExtractToDirectory(compat(zipName) + ".zip", GetTestFilePath())); + var testDirectory = GetTestFilePath(); + ZipFile.ExtractToDirectory(compat(zipName) + ".zip", testDirectory); + + Assert.True(File.Exists(Path.Combine(testDirectory, "a_6b6d"))); } [Theory] @@ -90,18 +93,6 @@ public void Unix_ZipWithOSSpecificFileNames(string zipName, string fileName) Assert.Equal(fileName, Path.GetFileName(results[0])); } - /// - /// This test ensures that a zipfile with path names that are invalid to this OS will throw errors - /// when an attempt is made to extract them. - /// - [Theory] - [InlineData("NullCharFileName_FromWindows")] - [InlineData("NullCharFileName_FromUnix")] - [PlatformSpecific(TestPlatforms.Windows)] // Checks Windows-specific invalid file path - public void Windows_ZipWithInvalidFileNames_ThrowsArgumentException(string zipName) - { - AssertExtensions.Throws("path", null, () => ZipFile.ExtractToDirectory(compat(zipName) + ".zip", GetTestFilePath())); - } /// /// This test checks whether or not ZipFile.ExtractToDirectory() is capable of handling filenames @@ -118,24 +109,26 @@ public void Windows_ZipWithInvalidFileNames_ThrowsArgumentException(string zipNa [PlatformSpecific(TestPlatforms.Windows)] public void Windows_ZipWithInvalidFileNames() { + var testDirectory = GetTestFilePath(); ZipFile.ExtractToDirectory(compat("InvalidWindowsFileNameChars.zip"), testDirectory); Assert.True(File.Exists(Path.Combine(testDirectory, "TestText______________________________________.txt"))); Assert.True(File.Exists(Path.Combine(testDirectory, "Test______________________________________/TestText1______________________________________.txt"))); Assert.True(File.Exists(Path.Combine(testDirectory, "Test/normalText.txt"))); - } - /// - /// This test ensures that a zipfile with path names that are invalid to this OS will throw errors - /// when an attempt is made to extract them. - /// - [Theory] - [InlineData("WindowsInvalid_FromUnix")] - [InlineData("WindowsInvalid_FromWindows")] - [PlatformSpecific(TestPlatforms.Windows)] // Checks Windows-specific invalid file path - public void Windows_ZipWithInvalidFileNames_ThrowsIOException(string zipName) - { - AssertExtensions.Throws(() => ZipFile.ExtractToDirectory(compat(zipName) + ".zip", GetTestFilePath())); + ZipFile.ExtractToDirectory(compat("NullCharFileName_FromWindows.zip"), testDirectory); + Assert.True(File.Exists(Path.Combine(testDirectory, "a_6b6d"))); + File.Delete(Path.Combine(testDirectory, "a_6b6d")); + + ZipFile.ExtractToDirectory(compat("NullCharFileName_FromUnix.zip"), testDirectory); + Assert.True(File.Exists(Path.Combine(testDirectory, "a_6b6d"))); + + ZipFile.ExtractToDirectory(compat("WindowsInvalid_FromUnix.zip"), testDirectory); + Assert.True(File.Exists(Path.Combine(testDirectory, "aa_b_d"))); + File.Delete(Path.Combine(testDirectory, "aa_b_d")); + + ZipFile.ExtractToDirectory(compat("WindowsInvalid_FromWindows.zip"), testDirectory); + Assert.True(File.Exists(Path.Combine(testDirectory, "aa_b_d"))); } [Theory] From 6867258690e302ebe7e30c70889e12f4b539b27a Mon Sep 17 00:00:00 2001 From: Danyy427 Date: Fri, 8 Apr 2022 23:40:25 +0300 Subject: [PATCH 14/21] Cleaned up code --- .../Compression/ZipFileValidFullName_Unix.cs | 10 +------- .../tests/ZipFile.Create.cs | 14 +++++++---- .../tests/ZipFile.Extract.cs | 24 ++++++++++++------- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidFullName_Unix.cs b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidFullName_Unix.cs index 0990b3c6f183bd..210739d3b3aa8a 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidFullName_Unix.cs +++ b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileValidFullName_Unix.cs @@ -9,15 +9,7 @@ public static partial class ZipFileExtensions { internal static string SanitizeZipFilePath(string zipPath) { - StringBuilder builder = new StringBuilder(zipPath); - for (int i = 0; i < zipPath.Length; i++) - { - if ((int)builder[i] == 0) - { - builder[i] = '_'; - } - } - return builder.ToString(); + return zipPath.Replace('\0', '_'); } } } diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs index 42633078e57cb7..af018e30728e90 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs @@ -288,7 +288,7 @@ public void InvalidDates() FileInfo fileWithBadDate = new FileInfo(GetTestFilePath()); fileWithBadDate.Create().Dispose(); fileWithBadDate.LastWriteTimeUtc = new DateTime(1970, 1, 1, 1, 1, 1); - + string archivePath = GetTestFilePath(); using (FileStream output = File.Open(archivePath, FileMode.Create)) using (ZipArchive archive = new ZipArchive(output, ZipArchiveMode.Create)) @@ -352,9 +352,12 @@ public void ReadStreamOps() [InlineData("NullCharFileName_FromWindows")] [InlineData("NullCharFileName_FromUnix")] [PlatformSpecific(TestPlatforms.AnyUnix)] // Checks Unix-specific invalid file path - public void Unix_ZipWithInvalidFileNames_ThrowsArgumentException(string zipName) + public void Unix_ZipWithInvalidFileNames(string zipName) { - Assert.Throws(() => ZipFile.ExtractToDirectory(compat(zipName) + ".zip", GetTestFilePath())); + string tempDirectory = GetTestFilePath(); + ZipFile.ExtractToDirectory(compat(zipName) + ".zip", tempDirectory); + + Assert.True(File.Exists(Path.Combine(tempDirectory, "a_6b6d"))); } [Fact] @@ -425,14 +428,15 @@ public async Task UpdateAddFile() [InlineData("NullCharFileName_FromWindows", "path")] [InlineData("NullCharFileName_FromUnix", "path")] [PlatformSpecific(TestPlatforms.Windows)] // Checks Windows-specific invalid file path - public void Windows_ZipWithInvalidFileNames_ThrowsException(string zipName, string paramName) + public void Windows_ZipWithInvalidFileNames(string zipName, string paramName) { - if (paramName == null) + if (paramName == null) { string tempDirectory = GetTestFilePath(); ZipFile.ExtractToDirectory(compat(zipName) + ".zip", tempDirectory); Assert.True(File.Exists(Path.Combine(tempDirectory, "aa_b_d"))); + } else { diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs index d8c7fd75682682..037cdf6daed036 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs @@ -112,23 +112,29 @@ public void Windows_ZipWithInvalidFileNames() var testDirectory = GetTestFilePath(); ZipFile.ExtractToDirectory(compat("InvalidWindowsFileNameChars.zip"), testDirectory); - Assert.True(File.Exists(Path.Combine(testDirectory, "TestText______________________________________.txt"))); - Assert.True(File.Exists(Path.Combine(testDirectory, "Test______________________________________/TestText1______________________________________.txt"))); - Assert.True(File.Exists(Path.Combine(testDirectory, "Test/normalText.txt"))); + CheckExists(testDirectory, "TestText______________________________________.txt"); + CheckExists(testDirectory, "Test______________________________________/TestText1______________________________________.txt"); + CheckExists(testDirectory, "Test/normalText.txt"); ZipFile.ExtractToDirectory(compat("NullCharFileName_FromWindows.zip"), testDirectory); - Assert.True(File.Exists(Path.Combine(testDirectory, "a_6b6d"))); - File.Delete(Path.Combine(testDirectory, "a_6b6d")); + CheckExists(testDirectory, "a_6b6d"); ZipFile.ExtractToDirectory(compat("NullCharFileName_FromUnix.zip"), testDirectory); - Assert.True(File.Exists(Path.Combine(testDirectory, "a_6b6d"))); + CheckExists(testDirectory, "a_6b6d"); ZipFile.ExtractToDirectory(compat("WindowsInvalid_FromUnix.zip"), testDirectory); - Assert.True(File.Exists(Path.Combine(testDirectory, "aa_b_d"))); - File.Delete(Path.Combine(testDirectory, "aa_b_d")); + CheckExists(testDirectory, "aa_b_d"); ZipFile.ExtractToDirectory(compat("WindowsInvalid_FromWindows.zip"), testDirectory); - Assert.True(File.Exists(Path.Combine(testDirectory, "aa_b_d"))); + CheckExists(testDirectory, "aa_b_d"); + + + void CheckExists(string testDirectory, string file) + { + string path = Path.Combine(testDirectory, file); + Assert.True(File.Exists(path)); + File.Delete(path); + } } [Theory] From 389289a76b47f7bdfd706f70cd3840c91cf0cbe7 Mon Sep 17 00:00:00 2001 From: Danyy427 Date: Sat, 9 Apr 2022 00:16:09 +0300 Subject: [PATCH 15/21] Removed unnecessary tests --- .../tests/ZipFile.Create.cs | 45 ------------------- .../tests/ZipFile.Extract.cs | 1 - 2 files changed, 46 deletions(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs index af018e30728e90..7ef198e8e735f5 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs @@ -344,22 +344,6 @@ public void ReadStreamOps() } } - /// - /// This test ensures that a zipfile with path names that are invalid to this OS will throw errors - /// when an attempt is made to extract them. - /// - [Theory] - [InlineData("NullCharFileName_FromWindows")] - [InlineData("NullCharFileName_FromUnix")] - [PlatformSpecific(TestPlatforms.AnyUnix)] // Checks Unix-specific invalid file path - public void Unix_ZipWithInvalidFileNames(string zipName) - { - string tempDirectory = GetTestFilePath(); - ZipFile.ExtractToDirectory(compat(zipName) + ".zip", tempDirectory); - - Assert.True(File.Exists(Path.Combine(tempDirectory, "a_6b6d"))); - } - [Fact] public void UpdateReadTwice() { @@ -418,35 +402,6 @@ public async Task UpdateAddFile() } } - /// - /// This test ensures that a zipfile with path names that are invalid to this OS will throw errors - /// when an attempt is made to extract them. - /// - [Theory] - [InlineData("WindowsInvalid_FromUnix", null)] - [InlineData("WindowsInvalid_FromWindows", null)] - [InlineData("NullCharFileName_FromWindows", "path")] - [InlineData("NullCharFileName_FromUnix", "path")] - [PlatformSpecific(TestPlatforms.Windows)] // Checks Windows-specific invalid file path - public void Windows_ZipWithInvalidFileNames(string zipName, string paramName) - { - if (paramName == null) - { - string tempDirectory = GetTestFilePath(); - ZipFile.ExtractToDirectory(compat(zipName) + ".zip", tempDirectory); - - Assert.True(File.Exists(Path.Combine(tempDirectory, "aa_b_d"))); - - } - else - { - string tempDirectory = GetTestFilePath(); - ZipFile.ExtractToDirectory(compat(zipName) + ".zip", tempDirectory); - - Assert.True(File.Exists(Path.Combine(tempDirectory, "a_6b6d"))); - } - } - private static async Task UpdateArchive(ZipArchive archive, string installFile, string entryName) { string fileName = installFile; diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs index 037cdf6daed036..b9517e975088a5 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Extract.cs @@ -128,7 +128,6 @@ public void Windows_ZipWithInvalidFileNames() ZipFile.ExtractToDirectory(compat("WindowsInvalid_FromWindows.zip"), testDirectory); CheckExists(testDirectory, "aa_b_d"); - void CheckExists(string testDirectory, string file) { string path = Path.Combine(testDirectory, file); From 482bddc96d5765aaed9b98ccb2ddca4ec59c2afa Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Sun, 10 Apr 2022 14:48:01 -0600 Subject: [PATCH 16/21] Change agnostic TFM back to Windows --- .../src/System.IO.Compression.ZipFile.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj index 5875410c5ea5fb..d6ea0a09bfebfc 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj +++ b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj @@ -1,7 +1,7 @@ true - $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Unix;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent) + $(NetCoreAppCurrent)-Unix;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent) enable @@ -17,7 +17,7 @@ Link="Common\System\IO\PathInternal.CaseSensitivity.cs" /> - + From d9b7f9ab527d1c6c8cc26c8ad1d3a4171a29579e Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Sun, 10 Apr 2022 14:48:30 -0600 Subject: [PATCH 17/21] spacing --- .../src/System.IO.Compression.ZipFile.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj index d6ea0a09bfebfc..e8d5008d753b5a 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj +++ b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj @@ -20,7 +20,7 @@ - + From f8d75fce437fc077bc2bd48665dc5db7f508df84 Mon Sep 17 00:00:00 2001 From: Danyy427 Date: Mon, 11 Apr 2022 16:58:51 +0300 Subject: [PATCH 18/21] Changed default target framework to Unix --- .../src/System.IO.Compression.ZipFile.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj index e8d5008d753b5a..ba0cf2b1273cec 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj +++ b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj @@ -1,7 +1,7 @@ true - $(NetCoreAppCurrent)-Unix;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent) + $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent)-Unix enable @@ -17,7 +17,7 @@ Link="Common\System\IO\PathInternal.CaseSensitivity.cs" /> - + From 034466f6a18fe1b6c0962ae7fff0b426049cf7de Mon Sep 17 00:00:00 2001 From: Danyy427 Date: Mon, 11 Apr 2022 17:08:53 +0300 Subject: [PATCH 19/21] Defaulted framework to unix --- .../src/System.IO.Compression.ZipFile.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj index ba0cf2b1273cec..4b08a49b088d9a 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj +++ b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj @@ -1,7 +1,7 @@ true - $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent)-Unix + $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent) enable @@ -21,7 +21,7 @@ - + Date: Mon, 11 Apr 2022 18:56:23 +0300 Subject: [PATCH 20/21] Removed Browser --- .../src/System.IO.Compression.ZipFile.csproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj index 4b08a49b088d9a..32e34d7d6493f7 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj +++ b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj @@ -1,7 +1,7 @@ - + true - $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent) + $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent) enable @@ -21,7 +21,7 @@ - + Date: Mon, 11 Apr 2022 12:03:42 -0600 Subject: [PATCH 21/21] Update src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs Co-authored-by: Viktor Hofer --- .../System.IO.Compression.ZipFile/tests/ZipFile.Create.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs index 7ef198e8e735f5..25bd7c65ec0619 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs +++ b/src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Create.cs @@ -288,7 +288,6 @@ public void InvalidDates() FileInfo fileWithBadDate = new FileInfo(GetTestFilePath()); fileWithBadDate.Create().Dispose(); fileWithBadDate.LastWriteTimeUtc = new DateTime(1970, 1, 1, 1, 1, 1); - string archivePath = GetTestFilePath(); using (FileStream output = File.Open(archivePath, FileMode.Create)) using (ZipArchive archive = new ZipArchive(output, ZipArchiveMode.Create))