Commit Graph

3052 Commits

Author SHA1 Message Date
Adam Hathcock
a83022ca17 Preserve frozen stream recordings during TAR probing 2026-10-16 15:57:21 +01:00
Adam Hathcock
9bb74557d5 Fix TAR probe cleanup and preserve active recording sessions 2026-10-16 15:08:36 +01:00
Adam Hathcock
c593d00651 Prevent unnecessary recording start in TarReader.Factory
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-10-16 09:40:21 +01:00
Adam Hathcock
07de36b505 Pool ZIP directory search buffers and bound signature scans 2026-10-15 16:49:30 +01:00
Adam Hathcock
454ec7e98b Dispose 7Zip reader decoders without closing borrowed volumes 2026-10-15 16:49:30 +01:00
Adam Hathcock
7505ba7e5f Release TAR probe buffers and avoid buffering seekable inputs 2026-10-15 16:49:30 +01:00
Adam Hathcock
77490536ae Fix async RAR unpacker buffer disposal 2026-10-15 16:48:47 +01:00
Adam Hathcock
211ce28f40 Merge pull request #1448 from adamhathcock/adam/merge-release-and-update-dependencies
Merge release fixes and update dependencies
2026-10-13 13:34:30 +01:00
Adam Hathcock
e58fcb23e5 Preserve async disposal across all supported frameworks 2026-10-13 12:57:14 +01:00
Adam Hathcock
3bbe0cc93f Use STREAM_DISPOSEASYNC capability guards for stream disposal 2026-10-13 12:41:38 +01:00
Adam Hathcock
d431c80b38 Fix WinZip AES authentication retry after cancellation 2026-10-13 12:23:24 +01:00
Adam Hathcock
a47e02e4cd Merge branch 'master' into adam/release-dependencies-and-async-stream-fixes 2026-10-13 11:40:46 +01:00
Adam Hathcock
1fb8ac1724 Merge remote-tracking branch 'origin/release'
# Conflicts:
#	src/SharpCompress/Compressors/LZMA/LzmaStream.Async.cs
#	src/SharpCompress/Compressors/LZMA/LzmaStream.cs
2026-10-13 11:39:15 +01:00
Adam Hathcock
1080969e51 Fix async writable entry streams and cross-framework disposal 2026-10-13 11:36:07 +01:00
Adam Hathcock
9ed27b9a7b Update dependencies and address threading analyzer findings 2026-10-13 11:18:34 +01:00
Adam Hathcock
cd9ce9ad94 Merge pull request #1443 from adamhathcock/fix/1441-sevenzip-libarchive-attributes
Fix 7z writer attribute interoperability with libarchive
2026-10-13 11:12:10 +01:00
Adam Hathcock
ba8d0f84b1 Merge remote-tracking branch 'origin/release'
# Conflicts:
#	src/SharpCompress/Common/GZip/GZipChecksumValidationStream.cs
#	src/SharpCompress/Common/Zip/WinzipAesCryptoStream.Async.cs
#	src/SharpCompress/Common/Zip/WinzipAesCryptoStream.cs
#	src/SharpCompress/Compressors/Deflate/ZlibBaseStream.cs
2026-10-13 11:00:17 +01:00
Adam Hathcock
9aa94c4345 Merge pull request #1447 from adamhathcock/fix/pooled-buffer-lifetimes
Fix pooled buffer ownership and exception-safe cleanup
2026-10-13 10:55:50 +01:00
Adam Hathcock
b4a2e2a254 Protect earlier ADC and RAR rentals when later allocation fails 2026-10-13 10:34:14 +01:00
Adam Hathcock
b91671dfc3 Release partially constructed 7z decoder streams on failure 2026-10-13 10:31:15 +01:00
Adam Hathcock
bdb42df4dc Make raw LZMA setup and disposal exception-safe 2026-10-13 10:29:07 +01:00
Adam Hathcock
38e3222dc2 Release rewind buffers despite disposal failures and reject disposed reads 2026-10-13 10:26:09 +01:00
Adam Hathcock
b3fac7e04a Release owned Squeeze buffers and failed PPMd models 2026-10-13 10:24:19 +01:00
Adam Hathcock
46437bbbbc Return pooled memory stream blocks when construction fails 2026-10-13 10:21:45 +01:00
Adam Hathcock
b8f3a8695b Validate LZMA2 setup before renting and reject disposed writes 2026-10-13 10:09:14 +01:00
Adam Hathcock
c574364838 Fix pooled buffer ownership and exception-safe cleanup 2026-10-13 09:57:19 +01:00
Adam Hathcock
cd3a18bce4 Add public 7z writer attribute regression coverage 2026-10-13 09:23:23 +01:00
Adam Hathcock
9c6cfe886a Merge remote-tracking branch 'origin/release' into fix/1441-sevenzip-libarchive-attributes 2026-10-13 09:13:55 +01:00
Adam Hathcock
c7115ced3e Merge pull request #1444 from adamhathcock/fix/1440-sevenzip-directory-only
Fix empty and directory-only 7z archive finalization
2026-10-13 09:12:04 +01:00
Adam Hathcock
971a01e940 Merge pull request #1445 from adamhathcock/fix/1439-sevenzip-password-exceptions
Expose public exceptions for encrypted 7z decoding failures
2026-10-13 08:11:19 +01:00
Adam Hathcock
dcd2515598 Merge remote-tracking branch 'origin/release' into fix/1439-sevenzip-password-exceptions
# Conflicts:
#	docs/API.md
2026-10-12 17:10:32 +01:00
Adam Hathcock
a147a7bc29 Merge pull request #1442 from adamhathcock/fix/release-pr-1436-followups
pr 1436 followups
2026-10-12 17:05:28 +01:00
Adam Hathcock
b924008b89 Return pooled tar header buffer only after parsing it
TarHeader.ReadAsync returned the rented header block to ArrayPool before
reading the checksum, name, size and other fields from it. Under parallel
load another caller could rent the same array and overwrite it, which made
async tar reads fail intermittently with a bad checksum ("Cannot determine
compressed stream type") or "Unexpected EOF reading tar file".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:59:41 +01:00
Adam Hathcock
68401dc86b Fix formatting and span import in streamless 7z tests 2026-10-12 16:43:34 +01:00
Adam Hathcock
c9f69470ad Refactor offset and size reading to use BinaryPrimitives
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-10-12 16:08:45 +01:00
Adam Hathcock
3b57f536f3 Merge pull request #1446 from adamhathcock/fix/1438-sevenzip-encryption-detection
Fix 7z encryption detection for streamless files
2026-10-12 16:00:24 +01:00
Adam Hathcock
69e1477ee6 Expose public exceptions for encrypted 7z decoding failures 2026-10-12 15:29:40 +01:00
Adam Hathcock
7d7983e0f4 Fix 7z encryption detection for streamless files 2026-10-12 15:29:40 +01:00
Adam Hathcock
9332fb9c70 Fix empty and directory-only 7z archive finalization 2026-10-12 15:28:49 +01:00
Adam Hathcock
cda73d09bd Fix 7z attribute interoperability with libarchive 2026-10-12 15:27:44 +01:00
Adam Hathcock
eac609b35a Report truncated encrypted RAR data as InvalidFormatException asynchronously
ReadExactAsync throws IncompleteArchiveException, so the async decrypt
path's EndOfStreamException catch never ran. On net48, EntryStream.Dispose
skips the entry through the async path, so its IncompleteArchiveException
replaced the InvalidFormatException from the synchronous read and failed
Rar_Multi_Reader_Encrypted. Sync and async now report truncated encrypted
data as InvalidFormatException.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 15:23:52 +01:00
Adam Hathcock
b07e6bc727 Validate fragmented GZip trailers asynchronously using inflater read-ahead 2026-10-10 15:40:39 +01:00
Adam Hathcock
b919aaab1f Validate GZip CRC and size during asynchronous stream disposal 2026-10-10 15:40:39 +01:00
Adam Hathcock
953ce61564 Consume both GZip header CRC bytes and reject truncated fields 2026-10-10 15:40:38 +01:00
Adam Hathcock
f888179583 Preserve DEFLATE read-ahead bytes after one-byte output and EOF 2026-10-10 15:40:37 +01:00
Adam Hathcock
fed1d884c7 Do not treat zero-length checksum reads as end of entry 2026-10-10 15:40:37 +01:00
Adam Hathcock
06fea02e64 Resolve RAR companion volumes with unambiguous case-insensitive fallback 2026-10-10 15:40:36 +01:00
Adam Hathcock
13ed208a2b Read ARJ headers and extended headers exactly 2026-10-10 15:40:36 +01:00
Adam Hathcock
2a68ec7257 Read ARC entry headers fully on fragmented streams 2026-10-10 15:40:35 +01:00
Adam Hathcock
b442327e5f Allow partial reads in ACE signature detection 2026-10-10 15:40:35 +01:00