Releases: zip-rs/zip2
Releases · zip-rs/zip2
v2.2.1
v2.2.0
v2.1.6
v2.1.5
🚜 Refactor
- change invalid_state() return type to io::Result
v2.1.4
🐛 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 ofshallow_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
anddeep_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
forZipWriter
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
🐛 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
🐛 Bug Fixes
- Derive
Debug
forZipWriter
- 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
🐛 Bug Fixes
- Derive
Debug
forZipWriter
- 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
🚀 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
andversion_made_by
work with recently-merged changes
v2.0.0
🚀 Features
- Add
fmt::Display
forDateTime
- Implement more traits for
DateTime
🚜 Refactor
- Change type of
last_modified_time
toOption<DateTime>
- [breaking] Rename
from_msdos
tofrom_msdos_unchecked
, make it unsafe, and addtry_from_msdos
(#145)
⚙️ Miscellaneous Tasks
- Continue to accept archives with invalid DateTime, and use
now_utc()
as default only when writing, not reading