Skip to content

Releases: zip-rs/zip2

v2.2.1

21 Nov 14:56
2c03abc
Compare
Choose a tag to compare

🐛 Bug Fixes

  • remove executable bit (#238)
  • (lzma) fixed panic in case of invalid lzma stream (#259)
  • resolve new clippy warnings on nightly (#262)
  • resolve clippy warning in nightly (#252)

⚡ Performance

  • Faster cde rejection (#255)

v2.2.0

20 Aug 01:41
6d39456
Compare
Choose a tag to compare

🚀 Features

  • Expose ZipArchive::central_directory_start (#232)

v2.1.6

31 Jul 10:57
beab418
Compare
Choose a tag to compare

🐛 Bug Fixes

  • (#33) Rare combination of settings could lead to writing a corrupt archive with overlength extra data, and data_start locations when reading the archive back were also wrong (#221)

🚜 Refactor

  • Eliminate some magic numbers and unnecessary path prefixes (#225)

v2.1.5

20 Jul 21:16
8fb107a
Compare
Choose a tag to compare

🚜 Refactor

  • change invalid_state() return type to io::Result

v2.1.4

19 Jul 09:50
9caa3b6
Compare
Choose a tag to compare

🐛 Bug Fixes

  • fix(#215): Upgrade to deflate64 0.1.9
  • Panic when reading a file truncated in the middle of an XZ block header
  • Some archives with over u16::MAX files were handled incorrectly or slowly (#189)
  • Check number of files when deciding whether a CDE is the real one
  • Could still select a fake CDE over a real one in some cases
  • May have to consider multiple CDEs before filtering for validity
  • We now keep searching for a real CDE header after read an invalid one from the file comment
  • Always search for data start when opening an archive for append, and reject the header if data appears to start after central directory
  • deep_copy_file no longer allows overwriting an existing file, to match the behavior of shallow_copy_file
  • File start position was wrong when extra data was present
  • Abort file if central extra data is too large
  • Overflow panic when central directory extra data is too large
  • ZIP64 header was being written twice when copying a file
  • ZIP64 header was being written to central header twice
  • Start position was incorrect when file had no extra data
  • Allow all reserved headers we can create
  • Fix a bug where alignment padding interacts with other extra-data fields
  • Fix bugs involving alignment padding and Unicode extra fields
  • Incorrect header when adding AES-encrypted files
  • Parse the extra field and reject it if invalid
  • Incorrect behavior following a rare combination of merge_archive, abort_file and deep_copy_file. As well, we now return an error when a file is being copied to itself.
  • path_to_string now properly handles the case of an empty path
  • Implement Debug for ZipWriter even when it's not implemented for the inner writer's type
  • Fix an issue where the central directory could be incorrectly detected
  • finish_into_readable() would corrupt the archive if the central directory had moved

🚜 Refactor

  • Verify with debug assertions that no FixedSizeBlock expects a multi-byte alignment (#198)
  • Use new do_or_abort_file method

⚡ Performance

  • Speed up CRC when encrypting small files
  • Limit the number of extra fields
  • Refactor extra-data validation
  • Store extra data in plain vectors until after validation
  • Only build one IndexMap after choosing among the possible valid headers
  • Simplify validation of empty extra-data fields
  • Validate automatic extra-data fields only once, even if several are present
  • Remove redundant validate_extra_data() call
  • Skip searching for the ZIP32 header if a valid ZIP64 header is present (#189)

⚙️ Miscellaneous Tasks

  • Fix a bug introduced by c934c82
  • Fix a failing unit test
  • Fix build errors on older Rust versions
  • Fix build
  • Fix another fuzz failure
  • Switch to ok_or_abort_file, and inline when that fails borrow checker
  • Switch to ok_or_abort_file, and inline when that fails borrow checker
  • Fix a build error
  • Fix boxed_local warning (can borrow instead)
  • Partial debug
  • Fix more errors when parsing multiple extra fields
  • Fix an error when decoding AES header
  • Fix an error caused by not allowing 0xa11e field
  • Bug fix: crypto_header was being counted toward extra_data_end
  • Bug fix: revert a change where crypto_header was incorrectly treated as an extra field
  • Fix a bug where a modulo of 0 was used
  • Fix a bug when ZipCrypto, alignment and a custom header are used
  • Fix a bug when both ZipCrypto and alignment are used
  • Fix another bug: header_end vs extra_data_end
  • Fix use of a stale value in a debug_assert_eq!
  • Fix: may still get an incorrect size if opening an invalid file for append
  • Fix: may need the absolute start as tiebreaker to ensure deterministic behavior

v2.1.3

05 Jun 06:49
b5eb25d
Compare
Choose a tag to compare

🐛 Bug Fixes

  • Some date/time filters were previously unreliable (i.e. later-pass filters had no earliest-pass or latest-fail, and vice-versa)
  • Decode Zip-Info UTF8 name and comment fields (#159)

🚜 Refactor

  • Return extended timestamp fields copied rather than borrowed (#183)

⚙️ Miscellaneous Tasks

  • Fix a new Clippy warning
  • Fix a bug and inline deserialize for safety
  • Add check for wrong-length blocks, and incorporate fixed-size requirement into the trait name
  • Fix a fuzz failure by using checked_sub
  • Add feature gate for new unit test

v2.1.2

02 Jun 19:26
999d41d
Compare
Choose a tag to compare

🐛 Bug Fixes

  • Derive Debug for ZipWriter
  • lower default version to 4.5 and use the version-needed-to-extract where feasible.

🚜 Refactor

  • use a MIN_VERSION constant

⚙️ Miscellaneous Tasks

  • Bug fixes for debug implementation
  • Bug fixes for debug implementation
  • Update unit tests
  • Remove unused import

v2.1.1

28 May 12:17
0b5fe20
Compare
Choose a tag to compare

🐛 Bug Fixes

  • Derive Debug for ZipWriter
  • lower default version to 4.5 and use the version-needed-to-extract where feasible.

🚜 Refactor

  • use a MIN_VERSION constant

⚙️ Miscellaneous Tasks

  • Bug fixes for debug implementation
  • Bug fixes for debug implementation
  • Update unit tests
  • Remove unused import

v2.1.0

25 May 12:13
6d4e460
Compare
Choose a tag to compare

🚀 Features

  • Support mutual conversion between DateTime and MS-DOS pair

🐛 Bug Fixes

  • version-needed-to-extract was incorrect in central header, and version-made-by could be lower than that (#100)
  • version-needed-to-extract was incorrect in central header, and version-made-by could be lower than that (#100)

⚙️ Miscellaneous Tasks

  • Another tweak to ensure version_needed is applied
  • Tweaks to make version_needed and version_made_by work with recently-merged changes

v2.0.0

24 May 06:14
94765a4
Compare
Choose a tag to compare

🚀 Features

  • Add fmt::Display for DateTime
  • Implement more traits for DateTime

🚜 Refactor

  • Change type of last_modified_time to Option<DateTime>
  • [breaking] Rename from_msdos to from_msdos_unchecked, make it unsafe, and add try_from_msdos (#145)

⚙️ Miscellaneous Tasks

  • Continue to accept archives with invalid DateTime, and use now_utc() as default only when writing, not reading