Skip to content

Releases: icsharpcode/SharpZipLib

v1.4.2

29 Jan 14:50
Compare
Choose a tag to compare

New patch release that further fixes issues with the changes in v1.4.0.

Fixes:

Other changes (not related to library code):

v1.4.1

05 Nov 11:59
Compare
Choose a tag to compare

New patch release that mainly fixes issues with the changes in v1.4.0.

ZIP String Encoding:

Further iteration on the StringCodec API, since the released version was confusing to use and in some cases could not be used without causing deprecation warnings.

TAR:

Two issues that could cause deadlocks was found in v1.4.0, one due to a typo in the async implementation and one due to a buffer not being cleared.

Async:

General async speed improvement, since we now correctly opt out of requiring to continue in the same context (ConfigureAwait(false)).

Other changes (not related to library code):

v1.4.0

18 Sep 10:13
cea8b0d
Compare
Choose a tag to compare

New minor release focusing on async and supporting newer frameworks.

Note that this version drops support for the EOL .NET 4.5 Framework, but adding explicit support for .NET 6.

Features:

Fixes:

Other changes (not related to library code):

v1.3.3

19 Sep 09:14
1b1ab01
Compare
Choose a tag to compare

Another minor release, containing security fixes and smaller bugfixes.

Fixes:

Smaller changes:

  • 🔨 [#604] Move the Password property from DeflaterOutputStream into ZipOutputStream by Richard Webb
  • 🔨 [#625] Make BZip2Constants static instead of sealed by Richard Webb
  • 🔨 [#626] make a couple of private functions static by Richard Webb

Other changes (not related to library code):

v1.3.2

08 May 17:10
Compare
Choose a tag to compare

Another minor release, containing security fixes and smaller bugfixes.
Additionally, this version will have an additional target framework, .NET Standard 2.1, which will see some speed improvements when
used in newer versions of .NET (Core), mainly in Bzip2.

Features

Smaller fixes and optimizations

Other changes (not related to library code)

v1.3.1

21 Nov 15:31
6170ef4
Compare
Choose a tag to compare

Minor release, mainly to address the incorrect file version of v1.3.0, but also contains some security fixes and performance improvements.

Highlights

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

Features

Fixes

Other changes (not related to library code)

v1.3.0

07 Oct 18:46
8f7d892
Compare
Choose a tag to compare

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

Other changes (not related to library code)

  • [#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 readme.md 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 readme.md 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

v1.2.0

10 Aug 09:53
56cbe99
Compare
Choose a tag to compare

Fixes:

  • ZipEntry name mismatch when attempting to delete a directory entry (#295)
  • Revert ArraySegment simplification to speed up CRC32 calculation (#301)
  • Allow AES Zip to better handle reading partial stream data (#308)
  • Always write Zip64 extra size fields when size is -1 (too big for non-Zip64) (#314)
  • Throw exception when attempting to read a zero code length symbol (#316)
    • This should fix most issues where reading Zip-files get stuck in an infinite loop
  • ZipOutputStream.CloseEntry() now works for Stored AES encrypted entries (#323)
  • Empty string is now treated as no RootPath in TarArchive (#336)
  • ZipAESStream now handle reads of less data than the AES block size (#331)
  • Flushing a GZipOutputStream now attempts to deflate all input data before writing it to the underlying stream (#225)
  • StrongEncryption flag is no longer (incorrectly) set for WinzipAES encrypted entries (#329)
  • Attempting to read 0 bytes from a GZipInputStream no longer causes it to hang indefinitely (#372)

Features:

  • HostSystem can now be set for Zipfiles, allowing creation of files targeting Linux filesystems (#325)
  • The SharpZip custom Exception types now implements ISerializable (#369)
    • This allows them to be transmitted when using WCF

Changes:

  • ZipFile constructor now has a leaveOpen parameter (#302)
  • FastZip.ExtractZip now sets isStreamOwner in the ZipFile constructor (#311)
  • ZipFile now always tries to find the Zip64 central directory and prefers it if exists (#363)
    • This will allow for better compatibility with other archivers.

v1.1.0

22 Dec 15:25
45347c3
Compare
Choose a tag to compare

Changes:

  • AES256 decryption now works as intended.
  • AES encryption should also be working but the code is not sufficiently tested and may be buggy.
  • Sourcelink debugging is now enabled and the symbols are included in the nuget package.
  • Overriding the codepage used for the file names and comments is now possible when extracting archives by setting ZipStrings.Codepage or ZipStrings.UseUnicode.
  • Calculating the Adler checksum is now skipped for Zip and Gzip since it's not actually used for the formats. This should greatly improve performance.

v1.0.0

19 Aug 17:03
fa75398
Compare
Choose a tag to compare

With the move to .NET Standard and the re-licensing to MIT, effort has been put into creating a stable v1.0 API for SharpZipLib.

Major changes since 0.86:

  • The targeted frameworks are now:
    • .NET Standard 2.0 netstandard2 (Core 2.0+, FW 4.6.1+, Mono 5.2+, UWP 16299)
    • .NET Framework 4.5 net45 (Mono 4, Dependency-free on Windows 8+/2012+)
      See .NET implementation support
  • The library is now released under the MIT license. See Issue #103.
  • The legacy Stream API has been replaced by the IDisposable pattern. (Stream.Close() calls Dispose(true) by default, so it should be backwards compatible)
    See Stream.Close Method.
  • Encoding now works more predictably, defaulting to UTF-8 encoding and correctly specifying it as such.
    See ZipStrings and Unicode.
  • FastZip now prevents traversal outside of the target directory when extracting unless this is explicitly allowed. See Restrict path traversal on FastZip extraction
  • The ICSharpCode.SharpZipLib.Checksums namespace has been renamed ICSharpCode.SharpZipLib.Checksum.

For more detailed notes, see Pre-release version notes.