All Versions
12
Latest Version
Avg Release Cycle
142 days
Latest Release
1480 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v1.3.1 Changes
November 21, 2020π 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
andAssemblyVersion
- π Security fixes for
ZipFile
andZip*Stream
s - π Improved CRC32 performance
- π BZip2 compression support for Zip files
π Features
- π [#355] Wire up BZip2 compression support for Zip files by Richard Webb
π Fixes
- β‘οΈ [#475] Fix updating zips with descriptor entries by Richard Webb & nils mΓ₯sΓ©n
- π [#516] Improve CRC32 performance by Nelson Gomez
- [#538] Use RNGCryptoServiceProvider for crypto headers by nils mΓ₯sΓ©n
- [#539] Use securely generated random temporary file names by nils mΓ₯sΓ©n
- [#509] Make PutNextEntry throw if the entry is AES and no password has been set by Richard Webb
Other changes (not related to library code)
- π [#541] Update csproj for new release by nils mΓ₯sΓ©n
- [#530] Fix Codacy Workflows by nils mΓ₯sΓ©n
- π [#529] Add release workflow by nils mΓ₯sΓ©n
- π [#511] Move the 7zip helper functions into their own class for easier reuse by Richard Webb
- π [#525] Update the sample projects to use the v1.3 release by Richard Webb
- π¦ [#522] Use PackageIcon instead of PackageIconUrl in csproj by nils mΓ₯sΓ©n
- [#523] Fix Codacy workflows by nils mΓ₯sΓ©n
- Correct
-
v1.3.0 Changes
October 07, 2020Highlights
- π 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 totrue
to allow the extraction to traverse outside of the target directory.TarArchive
constructors now includes anEncoding
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 Changes
August 10, 2019π 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 implementsISerializable
(#369)- This allows them to be transmitted when using WCF
π Changes:
-
v1.1.0 Changes
December 22, 2018π 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
orZipStrings.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 Changes
August 19, 2018π 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
- .NET Standard 2.0
- π The library is now released under the MIT license. See Issue #103.
- 0οΈβ£ 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. - 0οΈβ£ 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 renamedICSharpCode.SharpZipLib.Checksum
.
π For more detailed notes, see Pre-release version notes.
- The targeted frameworks are now:
-
v1.0.0-rc2 Changes
July 21, 2018π Changes
- 0οΈβ£
ZipEntry.IsUnicodeText
now defaults totrue
- 0οΈβ£
ZipConstants.DefaultCodePage
is now calledZipStrings.CodePage
(but backwards-compatible wrappers exists onZipConstants
)
π For more information, see ZipStrings and Unicode
π Fixes
- 0οΈβ£
-
v1.0.0-rc1 Changes
July 14, 2018π Changes
- π Supported frameworks are now NET45 and NETSTANDARD2
π Fixes
- π #232 SECURITY: vulnerable to zip-slip (possible remote code execution/file overwrite)
- π #164 System.NotSupportedException when zipping more than ~4.2 gb of data to a stream that doesn't support seeking
- β #229 TestArchive hangs
- #121 TAR in ustar format with long file names: TarEntry name is incomplete
- #151 GZip.Compress ArgumentOutOfRangeException:bufferSize
- #183 0 byte buffers writing 0 bytes fails CRC
- #213 Tar does not read the same number of blocks as it wrote - causes potential socket issues
-
v0.86.0.518 Changes
August 15, 2016π Changes for 0.86.0
- π Multi-member gzip files are now supported. Contributed by Geoff Hart.
- Zero byte files caused ZipOutputStream to create invalid zipfiles. Contributed by Mark Ritchie.
- β‘οΈ ZipFile.CommitUpdate failed on ODT (Open Document) files when updating in memory. Contributed by Dricks.
- β‘οΈ Exceptions occurring within ZipFile.CommitUpdate were being silently discarded.
- π In FastZip, the NameFilter erroneously removed all escapes from regex. Contributed by John Lemberger.
Note: This is a breaking change - if you had detoured this filter bug via doubled-up backslashes,
please halve them - for example change @"\myextract.txt$" to @"\myextract.txt$", or
π change "\myextract.txt$" to "\myextract.txt$". - π AES Encryption and Decryption is now supported.
- TarArchive now has IsStreamOwner property, for use with MemoryStream.
- β Removed exception "Extra data contains Zip64 information but version 2.0 is not high enough" due to rogue zip creators.
- FastZip.ExtractZip now accepts an Input Stream.
- Zip input and output streams can now specify buffer sizes.
- π» Solved "NTFS Extra data invalid" exception when reading zip files with zero-length NTFS ExtraData entry.
- π Fixed "Size mismatch" exceptions reading zips created by SharpZipLib with an explicit entry CRC and Size.
-
v0.85.5.452 Changes
August 15, 2016π Changes for 0.85.5
- π Fix for unreferenced ZipFile causing read failure after garbage collection.
- π Fix to ZipInputStream.CloseEntry were skipping could fail for long values.
- π Potential race condition flaw in FastZip event handling fixed up.
- π Wrong exceptions being thrown and wrong arguments for some exceptions fixed.
- TarArchive handling tweaked so creation of archive with Tar streams is handled cleanly
- β ZipFile Testing now handles directories better.
- DeflatorEngine altered so TotalIn is long.
- π ZipInputStream handles initial reading for entries with no data better.
- β‘οΈ Updates to unit tests
- BZip2Constants made internal. A breaking change in theory but no-one should be using these values.
- BZip2 QSort3 optimised somewhat by changing StackElement from class to struct as per lytico suggestion.
- Name filters allow quoting of ';' characters using ;
- π Fix GZIP flag checking bug
- ArgumentNull instead of NullReference in tar header now thrown.
- π WindowsNameTransform now used in fastzip
- Disposed checking in ZipFile beefed up.
- π Bug in entry handling for stored entries and sizing fixed.
- Zip entries with zero bytes written optimised.
- TarBuffer.IsEofBlock made obsolete use static TarBuffer.IsEndOfArchiveBlock instead.
- π» GZip Finish and Close no longer add extra footers. Close can be called twice without exception. Writes after finish/close now fail.
- Fastzip now throws exceptions if they are 'handled' via delegates.
-
v0.85.4.369 Changes
August 15, 2016π Changes for 0.85.4
- π Fix for encryption going awol in Zip archives sometimes
- β‘οΈ Help files updated and now generated by Sandcastle Help File Builder