Skip to content
nils måsén edited this page Aug 5, 2020 · 1 revision

Changes for v1.2

Bug/comformancy fixes and performance improvements.
See release notes for more information.

Changes for v1.1

AES256 decryption, codepage override and performance improvements.
See release notes for more information.

Changes for v1.0

Retargeted to .NET Framework 4.5 and .NET Standard 2.0, IDisposable pattern, Unicode encoding and restricted path traversal.
See release notes for more information.

Changes for v0.86.0.518 (released 2010/06/14)

Breaking changes

  • In FastZip, the NameFilter erroneously removed too many escapes from regex. ZIP-1654. Contributed by John Lemberger. Note: This is a breaking change from 0.85.5 - 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$".

New features and enhancements

  • Multi-member gzip files are now supported. Contributed by Geoff Hart.
  • AES Encryption and Decryption is now supported (except for ZipInputStream). ZIP-1649.
  • TarArchive now has IsStreamOwner property, for use with MemoryStream.
  • FastZip.ExtractZip now accepts an Input Stream.
  • Zip input and output streams can now specify buffer sizes.

Bug fixes, and workarounds for issues with other software

  • Zero byte files caused ZipOutputStream to create invalid zipfiles. ZIP-1648. Contributed by Mark Ritchie.
  • ZipFile.CommitUpdate failed on ODT (Open Document) files when updating in memory. ZIP-1650. Contributed by Dricks.
  • Exceptions occurring within ZipFile.CommitUpdate were being silently discarded. ZIP-1386.
  • Fixed "Size mismatch" exceptions reading zips created by SharpZipLib with an explicit entry CRC and Size. ZIP-1663.
  • Removed exception "Extra data contains Zip64 information but version 2.0 is not high enough" due to rogue zip creators.
  • Avoided "NTFS Extra data invalid" exception when reading zip files with zero-length NTFS ExtraData entry.

Changes for v0.85.5.452

  • 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's 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.
  • 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 arent 'handled' via delegates.
  • TarBuffer.IsEofBlock made obsolete use static TarBuffer.IsEndOfArchiveBlock instead.
  • Fix for Zip64 problems with streams that cannot seek.

Changes for v0.85.4.369 release

  • Fix for encryption going awol in Zip archives sometimes.
  • Help files updated and now generated by Sandcastle Help File Builder

Changes for v0.85.3.365 release

  • Encrypting stored entries no longer consumes arbitrary amounts of memory.
  • DeflatorOutputStream now uses CryptoTransform
  • ZipInputStream detection of invalid sizes improved.
  • ZipHelperStream reading end of stream values now correctly handled
  • ZipHelperStream now supports reading/writing data descriptors.
  • ZipFile testing data now handles data descriptors.
  • ZipFile adding entries now correctly handles data descriptors.
  • ZipFile now defaults to dynamic use of Zip64.
  • ZipEntryFactory class made public and bugs fixed.
  • ZipEntry DateTime handling cleaned up - Zero is treated as fixed low value and high values checked and handled. *Added progress event handling to FastZip.

Changes for v0.85.2.329 release

  • Minor tweaks for CF, ZipEntryFactory and ZipFile.
  • Fix for zip testing and Zip64 local header patching.
  • FastZip revamped to handle file attributes on extract + other fixes
  • Null ref in path filter fixed.
  • Extra data handling fixes
  • Revamped build and conditional compilation handling
  • Many bug fixes for Zip64.
  • Minor improvements to C# samples.
  • ZIP-1341 Non ascii zip password handling fix.
  • ZIP-355 Fix for zip compression problem at low levels

Changes for v0.85.1.271 release

  • BREAKING CHANGE: Zip name transform implementations and other classes no longer directly support absolute/non-relative paths.
  • Update to Compact Framework handling to cater for CF 2.0 as well as 1.0 (minus encryption for 1.0)
  • Fix for Zip64 descriptor handling.
  • Zip64 handling altered to default to "Zip32" for compatability.
  • Add preliminary implementation for handling of full unicode names.
  • Fix up encryption handling for ZipFile during updates.
  • Fix for updating bug were comment is the only thing updated.
  • Add IEntryFactory interface and default implementation. Used in FastZip class currently.
  • ZIP-1216 GZipOutputStream header writing delayed allowing the class to be used with HTTP and IIS (via HttpResponse.Filter). This was supposed to be fixed in 0.6 but was ommited.
  • ZIP-149 SVN Revision number incorporated in builds.
  • ZIP-1245 CF Build support added

Changes for v0.85 release

  • Mod time written in gzip header corrected.
  • Fix for ZipInputStream where closing an open entry wasnt handled correctly in all cases.
  • Add support for Zip64 handling to both streams and ZipFile classes.
  • Add ability to modify an existing archive via the ZipFile class.
  • Limited FxCop cleanups
  • TarArchive and others made IDisposable.
  • TarOutputStream end-of-file garbage data problem fixed.
  • Zip archive no longer performs zero byte writes which can cause problems.
  • A bundle of minor bug fixes particularly in the Zip area.
  • Enhanced ZIP testing facilities to allow feedback.

Known issues fixed

  • ZIP-975 BZip Compress and Decompress stream handling inconsistent.
  • ZIP-517 Stored entry handling were descriptors is specified in flags.
  • ZIP-514 FastZip not firing File/Directory Failure.
  • ZIP-513 HttpResponse exception when writing 0 bytes.
  • ZIP-506 Decryption fails for entry with extended time.
  • ZIP-174 Exception on zero length entries.

Changes for v0.84 release

  • When skipping to an entry in a Zip file data is no longer read.
  • More encryption refactoring/fixes for Zip files.
  • Add FastZip class
  • Fix bug when skipping entries
  • Fix for reads of zero length in Zip files
  • Archive testing is now possible in the ZipFile class.

Changes for v0.83a release

  • Fixed another tar long name bug.
  • Calling close an a stream returned by ZipFile.GetInputStream no longer closes the main ZipFile stream.

Changes for v0.83

  • Refactored tests so the main library doesnt require nunit to build. A separate project for tests now exists.
  • GzipOutputStream now has a custom SetLevel method to set the compression level.
  • Unit tests upgraded to Nunit 2.2 style
  • A number of TAR bugs fixes in long names, entry size handling
  • TAR checksums are now actually checked and utilised.
  • Zip Streams now have concept of ownership for underlying stream allowing users to control when they are closed.

Changes for v0.82

  • Exception hierarchy altered so all internal library exceptions are derived from the same base class
  • A bug in tar handling where case wasnt correctly preserved has been repaired
  • ZipFile class was failing to set the bit flags field when reading entries, this has been corrected.

Changes for v0.81

  • ZipFile test checking for seekable stream shifted so it covers all constructors.
  • Flaw when checking local entry name against central directory name for MCBS strings worked around.
  • Some ZipEntry constructors made internal as they should have been originally
  • Some changes to allow compact framework compilation made.
  • Small alteration to TarEntry.cs to allow 1.0 compilation as well as 1.1 .

Changes for 0.8

  • Add functionality to support cleaning of names to Zip file convention added to ZipEntry class
  • External file and attributes are now handled
  • IsDirectory now handles the attributes for archives made on DOS/Windows
  • ZipFile class now has an indexer property
  • ZipFile class has new functionality for searching for entries by name
  • ZipFile class now reads external attributes from central header entries
  • Fixed bug in ZipInputStream class where extra bytes containing unix attributes altered date and time causing checking of password to fail
  • ZipInputStream class now checks version required to extract.
  • ZipOutputStream class version made by is now fixed at 2.0
  • Cleaned up summary comments all over the place.
  • Some changes to Tar classes to allow Compact Framework compilation.
  • Add checking for invalid entries when scanning through extra data.
  • Decryption of entries from Zip files created on non-seekable output now works.
  • Deflating of zero length files is automatically converted to stored if possible to save a little space.
  • More tests.

Changes for 0.7

  • Further encryption problems resolved
  • More tests added
  • More summary comments included
  • ZipFile locating central header optimised for case where file is not a zip file.
  • Add sample sz a commandline cs archiver for Zip files
  • Fix more end of stream return value bugs
  • Some tar bugs fixed

Changes for 0.6.1

  • Fix from John Reilly jfreilly@hotmail.com: A couple of things to fix up in TarInputStream. Some Console.WriteLine stuff which should be removed/commented and a fix for handling directories.

Changes for 0.6

  • some return -1 bugs fixed
  • added gzipoutputstream mods from ben@blowery.org: "It writes out the GZip header to the base stream as part of its constructor. Unfortunately, I cannot write to the underlying stream (the HttpResponse.Filter) upon construction. I need to delay the header write until just before the first real write to the GZipOutputStream. I went ahead and made the modifications to the library and it seems to work wonderfully."
  • Added patches from John Reilly jfreilly@hotmail.com many, many bugs got fixed.
  • Added unit tests to ensure a certain level of stability

Changes for 0.51

  • Support for crypted files (decryption)
  • WinZip can't delete bug fixed (thanx to JackmanG from the SharpDevelop forum)
  • The ZipFile class has now a 'ZipFileComment' property containing the comment for the whole zip file. Contributed by John Carto.

Changes for 0.4

  • Compact Framework support
  • Tar bug fixed by Lloyd Dupont
  • Hopefully this time the date bug is fixed
  • SharpZipLib is now strong named and installGAC/uninstallGAC scripts are provided

Changes for 0.31

  • The Read method in the gzipstream returned still -1 instead of 0 at the eos

Changes for 0.3

  • Problem description: The BinaryDeserializer explicitly checks the length of the input stream you hand it, and throws an exception if you try to deserialize from a stream that reports a length of zero. Unfortunately, InflaterInputStream reports a length of zero when you first query it. Fixed by Joel Mueller jmueller@delani.com: The InflaterInputStream constructor (Stream, Inflater, int) is changed so that InflaterInputStream.len is initialized to baseInputStream.Length instead of zero.
  • Problem description: When you try to get all entries of your ZipFile class over a foreach(ZipEntry e in zFile) loop, you get all except the first one. I think the reason for this is: your index member (ptr) is initialized with value 0. Because your function MoveNext() first increases ptr and then the entry is accessed the first entry is skipped.
  • Bugfix date/time bug by Rainer Prem Rainer@Prem.de
  • Renamed the library to SharpZipLib (#ZipLib for short)
  • Added bzip2 compression/decompression
  • The Read method returns 0 instead of -1, when the end of the stream is reached. (this is defined by the .NET library)
  • Added tar support
  • The Date/Time now works better when reading zip files.
  • Fixed a rare compression bug (exception while zip/gzip specific files)

Changes for 0.2

  • Added new property in ZipEntry: DateTime Datetime {get; set;} (gets/sets datetime of an entry; should be easier to handle than the dos time. (int value))
  • Added new class: ZipFile. This class allows easy reading of a zipped file and it's entries.
  • Changed the ZipOutputStream behavior: Now it writes the Size, Crc, Compressed size in the header, if the baseOutputStream is able to seek (which should be true for all files). Some crunchers had problems unpacking the files which had the Size, Crc, Compressed size fields in the data descriptor after the file data.
  • CompressionMethod is now an enumeration instead of a int.
  • Changed many internal Get/Set methods into C# properties.
  • The base methods in the Deflater/Inflater Streams are now called correctly; it should work to use this construct (at least in my CVS library it does): new InflaterInputStream(new DeflaterOutputStream(new IOStream());
  • Fixed bug: DeflateFast had a bug which is now (hopefully) gone. This bug was in the original Java version too. (But please test fast deflate (compression level 1-3))

Back to SharpZipLib - Main Page