Commit Graph

829 Commits

Author SHA1 Message Date
Adam Hathcock
1f490d933f tests for normal and forward only usage 2026-07-27 15:59:36 +01:00
Adam Hathcock
fe75f28ac9 DataDescriptor should always be non-seekable 2026-07-25 17:08:50 +01:00
Adam Hathcock
ba221b27af Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-24 09:34:18 +01:00
copilot-swe-agent[bot]
3e61a72248 test: broaden transformed stream reader coverage 2026-07-24 07:35:07 +00:00
copilot-swe-agent[bot]
3375aaa90c fix: preserve transformed streams in reader detection 2026-07-24 07:18:02 +00:00
Adam Hathcock
bb7be935a3 Merge pull request #1372 from adamhathcock/adam/pr-1369
Fixes ZipWriter to be fully forward only
2026-07-23 10:23:12 +01:00
Adam Hathcock
152a66f802 add more tests 2026-07-23 10:17:28 +01:00
Adam Hathcock
e3b7a560ba Fix legacy build issue 2026-07-23 10:04:06 +01:00
Adam Hathcock
02f1a1616a Fixes ZipWriter to be fully forward only 2026-07-23 09:28:04 +01:00
copilot-swe-agent[bot]
b86a871e22 Fix GZipFactory flat gzip probe disposal regression 2026-07-23 08:02:01 +00:00
Adam Hathcock
073d99153b Merge pull request #1360 from adamhathcock/adam/remove-compressed-tar-archive
Remove compressed tar archive
2026-07-12 11:55:04 +01:00
Adam Hathcock
581a6dc945 Further advice from Sol 2026-07-12 11:35:46 +01:00
Adam Hathcock
fda3d186c5 more tests and a removal of a test 2026-07-12 11:09:49 +01:00
Pat Hartl
c59aa78928 Zip: fix Zip64 streaming reader corrupting entry size/CRC and failing on non-seekable streams
The Zip64 branch of the streaming header reader assumed a data descriptor always follows a >=4GB entry. When the entry instead has back-patched sizes (no descriptor), the following header was parsed as descriptor fields, overwriting the entry's correct size/CRC with central-directory 0xFFFFFFFF sentinels and, on non-seekable async streams, leaving the reader misaligned so the next entry threw.

Now it detects a header signature after the entry data and leaves the already-correct metadata untouched, parsing that header normally. The fix has been applied to both the sync and async readers.
2026-06-29 21:35:55 -05:00
Adam Hathcock
b8a7cc18d9 intermediate commit 2026-06-24 16:27:57 +01:00
Adam Hathcock
760f7685f8 First pass of removing Compressed Tar Archive support. Compressed Tars should be done with TarReader only 2026-06-23 15:42:04 +01:00
Fidel
de8ee30b17 BZip2: add opt-in tolerateTruncatedStream to decode a footerless/partial stream
Add a `tolerateTruncatedStream` option (default false) to `BZip2Stream.Create`/`CreateAsync`,
threaded through to `CBZip2InputStream`. When enabled, the decoder accepts a stream that has no
trailing footer - e.g. a truncated stream, or a sub-range of blocks extracted for random access:

- An end-of-input reached while reading a block/footer header (a true block boundary, tracked by
  `expectingBlockStart`) is treated as a normal end of stream instead of throwing
  `ArchiveOperationException("BZip2 compressed file ends unexpectedly")`. EOF in the middle of a
  block, the block CRC, or the Huffman tables still throws.
- The whole-stream combined CRC in the footer is not verified, since a partial decode's running
  combined CRC won't match the stored whole-stream value. Per-block CRCs are still enforced.

Default behaviour is unchanged (the flag defaults to false) and the change is applied symmetrically
to the sync and async read paths.

Tests (BZip2StreamTests):
- a footerless header-only stream decodes to empty with the flag and throws without it;
- a real block followed by end-of-input at the next block boundary decodes with the flag and throws
  without it;
- a corrupted whole-stream combined CRC is tolerated with the flag and fatal without it;
- a complete, well-formed stream still round-trips with the flag set.
All existing BZip2 tests continue to pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 13:08:02 +10:00
Adam Hathcock
49d00034e4 update tests 2026-06-19 11:21:39 +01:00
Adam Hathcock
727d2a79f9 updates from review 2026-06-18 17:06:16 +01:00
Adam Hathcock
e8ee054757 rest of the formats 2026-06-15 17:02:31 +01:00
Adam Hathcock
808524d917 BZip2, GZip and XZ done 2026-06-15 09:59:48 +01:00
Adam Hathcock
e9e05520d6 7Zip and Rar 2026-06-15 09:29:50 +01:00
Adam Hathcock
2866bfbd54 First pass with zip 2026-06-15 09:17:05 +01:00
Adam Hathcock
78a2218982 Handle lzma end marker correctly 2026-06-13 15:09:13 +01:00
Adam Hathcock
2d041e5c76 Fixed XZ block CRC64 computation and added notes on XZ format specifics 2026-06-13 14:31:36 +01:00
Adam Hathcock
160ba0938a review fixes 2026-06-13 10:00:39 +01:00
Adam Hathcock
7814013995 Merge remote-tracking branch 'origin/master' into adam/xz-crc-check 2026-06-13 09:40:39 +01:00
Adam Hathcock
4e3dcabbd0 Add basic crc checking for xz 2026-06-13 09:24:04 +01:00
Adam Hathcock
21b9c33c95 Fix tests 2026-06-12 14:51:56 +01:00
Adam Hathcock
de6e2bfee2 Add WriterOptions.BufferSize property 2026-06-12 14:41:05 +01:00
Adam Hathcock
3a73cfe925 Add instance based extraction size instead of just static 2026-06-11 17:24:42 +01:00
Adam Hathcock
5bfb67e177 Update deps 2026-06-02 09:13:00 +01:00
Adam Hathcock
ca32d49957 Merge remote-tracking branch 'origin/master' into copilot/fix-tararchive-missing-entries 2026-05-29 15:20:22 +01:00
Adam Hathcock
7a6a8d53f9 Fix merge 2026-05-29 15:11:39 +01:00
Adam Hathcock
938995ea43 Merge remote-tracking branch 'origin/master' into copilot/fix-tararchive-missing-entries
# Conflicts:
#	tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs
2026-05-29 14:43:13 +01:00
copilot-swe-agent[bot]
ee64868919 Add tar reader regression tests 2026-05-29 11:58:38 +00:00
Adam Hathcock
e7eb1097fa update settings to avoid package lock churn 2026-05-29 10:07:10 +01:00
Adam Hathcock
49d3452c4f Merge remote-tracking branch 'origin/master' into adam/fix-locks 2026-05-29 09:49:35 +01:00
Adam Hathcock
eb5efc27c9 Merge pull request #1340 from adamhathcock/copilot/fix-7zip-progress-reporting
Restore `WriteToDirectoryAsync` progress callbacks for solid 7z archives
2026-05-29 09:48:32 +01:00
Adam Hathcock
d6efe32cda fmt 2026-05-29 09:25:52 +01:00
Adam Hathcock
7c5a7dccb1 Try to fix global.json to avoid churn in locks 2026-05-29 09:25:14 +01:00
copilot-swe-agent[bot]
ae8d983b72 Fix flaky progress test by using synchronous IProgress implementation 2026-05-29 08:13:41 +00:00
copilot-swe-agent[bot]
d5a8f98500 Fix async progress reporting for solid 7z extraction 2026-05-29 08:02:33 +00:00
copilot-swe-agent[bot]
5adae487c7 Fix writable archive async disposal and add regression tests 2026-05-28 13:12:11 +00:00
copilot-swe-agent[bot]
0a3c36dc80 Dispose caller-provided stream in async archive open test 2026-05-27 08:05:46 +00:00
copilot-swe-agent[bot]
851aa391c6 test: dispose wrapped cancellation stream 2026-05-27 08:05:19 +00:00
copilot-swe-agent[bot]
c0b42d4806 test: dispose reader stream in async parity test 2026-05-27 08:04:00 +00:00
Adam Hathcock
55df0d30d9 add AOT smoke and missing tests 2026-05-26 15:47:44 +01:00
Adam Hathcock
98b4ffc807 Merge pull request #1332 from adamhathcock/adam/update-docs-skills
Add skills
2026-05-26 15:36:44 +01:00
Adam Hathcock
35c9cdd232 add zip skill and upgrade packages 2026-05-26 15:23:29 +01:00