SharpZipLib v1.3.1 Release Notes

Release Date: 2020-11-21 // 3 months ago
  • 🚀 Minor release, mainly to address the incorrect file version of v1.3.0, but also contains some security fixes and performance improvements.


    • Correct FileVersion and AssemblyVersion
    • 🔒 Security fixes for ZipFile and Zip*Streams
    • 👌 Improved CRC32 performance
    • 👍 BZip2 compression support for Zip files

    🔋 Features

    🛠 Fixes

Previous changes from v1.3.0

  • Highlights

    • 🛠 AES encryption fixes and support in FastZip
    • 👍 File name encoding support for Tar
    • 👌 Improved Unix timestamp support
    • 👍 Better handling of entry file names
    • 🛠 Fix errors with entries using Stored compression method

    🔄 Changes

    • TarArchive.ExtractContents() now needs another parameter set to true to allow the extraction to traverse outside of the target directory.
    • TarArchive constructors now includes an Encoding parameter. Omitting it will discard any non-ASCII bytes in file names.

    🛠 Fixes

    • [#503] Consider AES overhead when testing encrypted folder entries by Richard Webb
    • [#452] Ensure crypto streams are disposed in ZipFile.GetOutputStream by Richard Webb
    • 👍 [#333] Handle unsupported compression methods in ZipInputStream better by Richard Webb
    • ⚡️ [#402] Only convert entry.Name once when accessing updateIndex by Vladyslav Taranov
    • [#353] Fix ZipFile.TestLocalHeader CompressionMethod resolving for AES entries by Richard Webb
    • [#460] Account for AES overhead in compressed entry size by Richard Webb
    • [#422] Change ZipOutputStream.PutNextEntry to explicity validate the requested compression method by Richard Webb
    • 👀 [#467] Allow seeking a PartialInputStream to the very end by Víctor M. González
    • [#440] Use CompressionMethodForHeader for header entries by Richard Webb
    • 👍 [#420] Throw NotSupportedException in ZipFile.Add when trying to add AES entry by Richard Webb
    • [#421] Have ZipFile.Add validate compression compability internally by Richard Webb
    • 👍 [#387] Better handle baseStreams closing themselves unexpectedly by Richard Webb
    • 🛠 [#408] When searching for the Zip64 end of central directory locator, pay attention to its fixed size by Richard Webb
    • [#406] Skip forced Deflate flush when using Stored compression by nils måsén
    • [#362] Don't call CleanName from the ZipEntry constructor by Richard Webb
    • [#465] Use correct count in ZipAESStream.ReadBufferedData by Víctor M. González
    • [#390] Ensure GZipOutputStream headers are written before flush by Richard Webb
    • [#498] Use string.Trim to trim strings by Richard Webb
    • [#432] Throw ArgumentNullException in BZip2 by Richard Webb
    • [#519] Restrict path traversal on TarArchive extraction by nils måsén

    🔋 Features

    • [#201] Raise ProcessDirectory event for FastZip extract by Stevie-O
    • 👍 [#380] Add support for AES encryption in FastZip.CreateZip by Richard Webb
    • [#497] Transform new entry names using an INameTranform in ZipOutputStream by Richard Webb
    • [#482] Add variants of FastZip.CreateZip taking IScanFilter instead of strings by Richard Webb
    • [#455] Add FastZip.CreateZip with a leaveOpen parameter by Richard Webb
    • [#433] Restore directory timestamps when extracting with FastZip by Richard Webb
    • [#472] Allow ZipFile to accept empty strings as passwords when decrypting AES entries by Richard Webb
    • [#364] Add nameEncoding parameter to Tar entries by Yusuke Ito
    • 👍 [#463] Improve support for Unix timestamps in ZIP archives by Bastian Eicher
    • 🔒 [#346] Add a Security Policy by nils måsén
    • ⚡️ [#451] Minimize and update sample app package dependencies by Richard Webb
    • [#505] Expect ZipEntry clean name test to be positive by nils måsén
    • [#504] Fix warning about missing doc comment in FastZip.CreateZip by Richard Webb
    • ⚡️ [#374] Update Docs generation by nils måsén
    • 🚚 [#431] Remove the link to the sharpdevelop forum from by Richard Webb
    • 🚀 [#425] Update Microsoft.SourceLink.GitHub to the 1.0.0 release version by Richard Webb
    • [#483] Suppress CA1707 warnings from LzwConstants by Richard Webb
    • [#458] Dispose of entry streams returned by ZipFile.GetInputStream by Richard Webb
    • [#488] Add [MemoryDiagnoser] to the zip input/output stream benchmark classes by Richard Webb
    • 🚚 [#489] Remove duplicate ICSharpCode.SharpZipLib.snk by Richard Webb
    • [#494] Use the Range to test different compression levels in InflaterDeflaterTestSuite by Richard Webb
    • [#502] Fix tests and ZipEntry DateTime Kind by nils måsén
    • 🚚 [#476] Remove duplicated words in comments by Richard Webb
    • [#477] Fix spelling errors in comments by Richard Webb
    • ⚡️ [#479] Streamline and update VB sample projects by Richard Webb
    • [#445] Make InvalidHeaderException serializable by Richard Webb
    • [#450] Fix CA1200 code analyzer warnings by Richard Webb
    • [#435] Add unit test for ZipFile.Add(string fileName, string entryName) by Richard Webb
    • [#448] Fix unit test assert argument order by Richard Webb
    • 👻 [#461] Fix Exception doc comments by Richard Webb
    • 🏗 [#453] Fix the 7-zip interop tests in the .Net 4.6 test build by Richard Webb
    • [#466] Improve the ZipFileStoreAesPartialRead test to test multiple block sizes by Richard Webb
    • [#468] Add test for adding empty folders to archives using FastZip by Richard Webb
    • [#473] Add a Nuget badge to by Richard Webb
    • [#469] Add test for writing using a zero byte buffer by Richard Webb
    • 📚 [#389] Simplify Documentation generation by Robin Sue
    • [#437] Add a ZipCrypto/7zip interop test to the ZipEncryptionHandling tests by Richard Webb
    • ⚡️ [#441] Update the benchmark project to BenchmarkDotNet 0.12.1 by Richard Webb
    • [#444] Multi-target unit tests for .NET Core 2.0 and .NET FW 4.6 by Richard Webb