From 08686cebb5b2e517cd356bc33d79205d8fcc8d66 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Mon, 10 Feb 2020 19:28:21 +0200 Subject: Fixed issue with cef installer. --- .../ExtensionMethods/ZipArchiveExtensions.cs | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Software/Visual_Studio/Tango.Core/ExtensionMethods/ZipArchiveExtensions.cs (limited to 'Software/Visual_Studio/Tango.Core/ExtensionMethods') diff --git a/Software/Visual_Studio/Tango.Core/ExtensionMethods/ZipArchiveExtensions.cs b/Software/Visual_Studio/Tango.Core/ExtensionMethods/ZipArchiveExtensions.cs new file mode 100644 index 000000000..15aba05bd --- /dev/null +++ b/Software/Visual_Studio/Tango.Core/ExtensionMethods/ZipArchiveExtensions.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +public static class ZipArchiveExtensions +{ + public static void ExtractToDirectory(this ZipArchive archive, string destinationDirectoryName, bool overwrite) + { + if (!overwrite) + { + archive.ExtractToDirectory(destinationDirectoryName); + return; + } + + DirectoryInfo di = Directory.CreateDirectory(destinationDirectoryName); + string destinationDirectoryFullPath = di.FullName; + + foreach (ZipArchiveEntry file in archive.Entries) + { + string completeFileName = Path.GetFullPath(Path.Combine(destinationDirectoryFullPath, file.FullName)); + + if (!completeFileName.StartsWith(destinationDirectoryFullPath, StringComparison.OrdinalIgnoreCase)) + { + throw new IOException("Trying to extract file outside of destination directory. See this link for more info: https://snyk.io/research/zip-slip-vulnerability"); + } + + if (file.Name == "") + { + Directory.CreateDirectory(Path.GetDirectoryName(completeFileName)); + continue; + } + file.ExtractToFile(completeFileName, true); + } + } +} -- cgit v1.3.1