diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-02-10 19:28:21 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-02-10 19:28:21 +0200 |
| commit | 08686cebb5b2e517cd356bc33d79205d8fcc8d66 (patch) | |
| tree | 0f5e6189f92229b82c0a9521db2643237f546fd2 /Software/Visual_Studio/Tango.Core | |
| parent | c7cc955c8d6d546bf65652c2de7482c56d91bf05 (diff) | |
| download | Tango-08686cebb5b2e517cd356bc33d79205d8fcc8d66.tar.gz Tango-08686cebb5b2e517cd356bc33d79205d8fcc8d66.zip | |
Fixed issue with cef installer.
Diffstat (limited to 'Software/Visual_Studio/Tango.Core')
| -rw-r--r-- | Software/Visual_Studio/Tango.Core/ExtensionMethods/ZipArchiveExtensions.cs | 39 | ||||
| -rw-r--r-- | Software/Visual_Studio/Tango.Core/Tango.Core.csproj | 5 |
2 files changed, 43 insertions, 1 deletions
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); + } + } +} diff --git a/Software/Visual_Studio/Tango.Core/Tango.Core.csproj b/Software/Visual_Studio/Tango.Core/Tango.Core.csproj index 06c6e5a22..891c5e58f 100644 --- a/Software/Visual_Studio/Tango.Core/Tango.Core.csproj +++ b/Software/Visual_Studio/Tango.Core/Tango.Core.csproj @@ -72,6 +72,8 @@ </Reference> <Reference Include="System.Drawing" /> <Reference Include="System.IdentityModel" /> + <Reference Include="System.IO.Compression" /> + <Reference Include="System.IO.Compression.FileSystem" /> <Reference Include="System.Net.Http" /> <Reference Include="System.Runtime.Serialization" /> <Reference Include="System.Windows" /> @@ -92,6 +94,7 @@ <Compile Include="CustomAttributes\PropertyIndexAttribute.cs" /> <Compile Include="CustomAttributes\StringFormatAttribute.cs" /> <Compile Include="ExtensionMethods\ByteArrayExtensions.cs" /> + <Compile Include="ExtensionMethods\ZipArchiveExtensions.cs" /> <Compile Include="IO\KnownFolders.cs" /> <Compile Include="Json\ProtobufContractResolver.cs" /> <Compile Include="Threading\ActionTimer.cs" /> @@ -202,7 +205,7 @@ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" /> + <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" /> </VisualStudio> </ProjectExtensions> <Import Project="..\packages\System.Data.SQLite.Core.1.0.108.0\build\net46\System.Data.SQLite.Core.targets" Condition="Exists('..\packages\System.Data.SQLite.Core.1.0.108.0\build\net46\System.Data.SQLite.Core.targets')" /> |
