| |
@@ -1,53 +0,0 @@
|
| |
- From 65a19e18d7d4b94f50772bd3118c0b9868766af5 Mon Sep 17 00:00:00 2001
|
| |
- From: Maryam Ariyan <maryam.ariyan@microsoft.com>
|
| |
- Date: Fri, 7 Sep 2018 10:53:25 -0700
|
| |
- Subject: [PATCH] Fixes extract out of directory by ensuring trailing separator
|
| |
- for nested paths.
|
| |
-
|
| |
- Related to PR #32127
|
| |
- ---
|
| |
- .../System/IO/Compression/ZipFileExtensions.cs | 2 ++
|
| |
- .../tests/ZipFileConvenienceMethods.cs | 17 +++++++++++++++++
|
| |
- 2 files changed, 19 insertions(+)
|
| |
-
|
| |
- diff --git a/src/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.cs b/src/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.cs
|
| |
- index 3fef7883c953..c749c8250f9c 100644
|
| |
- --- a/src/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.cs
|
| |
- +++ b/src/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.cs
|
| |
- @@ -160,6 +160,8 @@ public static void ExtractToDirectory(this ZipArchive source, string destination
|
| |
- // Note that this will give us a good DirectoryInfo even if destinationDirectoryName exists:
|
| |
- DirectoryInfo di = Directory.CreateDirectory(destinationDirectoryName);
|
| |
- string destinationDirectoryFullPath = di.FullName;
|
| |
- + if (!destinationDirectoryFullPath.EndsWith(Path.DirectorySeparatorChar))
|
| |
- + destinationDirectoryFullPath += Path.DirectorySeparatorChar;
|
| |
-
|
| |
- foreach (ZipArchiveEntry entry in source.Entries)
|
| |
- {
|
| |
- diff --git a/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs b/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs
|
| |
- index 69c822e3fc7e..3a0255d03862 100644
|
| |
- --- a/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs
|
| |
- +++ b/src/System.IO.Compression.ZipFile/tests/ZipFileConvenienceMethods.cs
|
| |
- @@ -186,6 +186,23 @@ public void ExtractToDirectoryExtension_Unicode()
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- + [Theory]
|
| |
- + [InlineData("../Foo")]
|
| |
- + [InlineData("../Barbell")]
|
| |
- + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Second case fails.")]
|
| |
- + public void ExtractOutOfRoot(string entryName)
|
| |
- + {
|
| |
- + string archivePath = GetTestFilePath();
|
| |
- + using (FileStream stream = new FileStream(archivePath, FileMode.Create))
|
| |
- + using (ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Create, leaveOpen: true))
|
| |
- + {
|
| |
- + ZipArchiveEntry entry = archive.CreateEntry(entryName);
|
| |
- + }
|
| |
- +
|
| |
- + DirectoryInfo destination = Directory.CreateDirectory(Path.Combine(GetTestFilePath(), "Bar"));
|
| |
- + Assert.Throws<IOException>(() => ZipFile.ExtractToDirectory(archivePath, destination.FullName));
|
| |
- + }
|
| |
- +
|
| |
- [Fact]
|
| |
- public void CreatedEmptyDirectoriesRoundtrip()
|
| |
- {
|
| |
Build: https://copr.fedorainfracloud.org/coprs/g/dotnet-sig/dotnet/build/848518/