Commit Graph

2970 Commits

Author SHA1 Message Date
Adam Hathcock
2fe5f3a4e8 Merge commit from fork
Reject truncated LZMA2 headers and prevent stalled decoding
2026-10-19 10:27:41 +01:00
Adam Hathcock
7642f76f38 changes fixes to use pooled arrays 2026-10-19 10:10:09 +01:00
Adam Hathcock
4966fc186b Merge branch 'release' into fix/lzma2-truncated-header
# Conflicts:
#	src/SharpCompress/Compressors/LZMA/LZ/LzOutWindow.cs
2026-10-19 09:59:33 +01:00
Adam Hathcock
7fc5c0e565 Use pooled memory streams for temporary production buffers 2026-10-16 15:44:44 +01:00
Adam Hathcock
2369f10b63 Grow LZMA dictionary storage only as decoded history requires 2026-10-16 15:39:56 +01:00
Adam Hathcock
8a9b76dd44 Grow Shrink output from decoded bytes and stop at input EOF 2026-10-16 15:35:27 +01:00
Adam Hathcock
0860da8bc5 Buffer ARC LZW input incrementally and reject truncated entries 2026-10-16 15:34:07 +01:00
Adam Hathcock
9b0be6f984 Skip ZIP64 extensible data without size-driven allocations 2026-10-16 15:33:10 +01:00
Adam Hathcock
bc1ade2bbc Reject truncated LZMA2 headers and prevent stalled decoding 2026-10-16 15:23:57 +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
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
Adam Hathcock
d01539ae3c Handle partial LZip headers and validate dictionary sizes consistently 2026-10-10 15:40:35 +01:00
Adam Hathcock
17f26064f9 Read ZIP AES encryption metadata exactly on fragmented streams 2026-10-10 15:40:34 +01:00
Adam Hathcock
7265047dd7 Verify WinZip AES authentication and reject truncated encrypted data 2026-10-10 15:40:34 +01:00
Adam Hathcock
9ba6d17b5d Validate 7z AES KDF limits before unsalted key derivation 2026-10-10 15:40:33 +01:00
Adam Hathcock
ab3ac18e98 Fix release review findings in RAR, GZip, and split ZIP parsing 2026-10-10 08:22:55 +01:00
Adam Hathcock
e4193af83b Merge pull request #1435 from adamhathcock/rebuild/release-06-7z-header-bounds
Reapply 7z next-header bounds validation to release
0.50.5
2026-10-09 15:10:21 +01:00
Adam Hathcock
0bdf3b4d03 Merge pull request #1434 from adamhathcock/rebuild/release-05-gzip-reader-archive
Reapply gzip reader/archive XLEN overflow fix to release
2026-10-09 15:10:05 +01:00