You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.2 KiB
1.2 KiB
| title | status | type | priority | created_at | updated_at | parent |
|---|---|---|---|---|---|---|
| Support .tar.zst uploads (zstd) | completed | task | normal | 2026-07-21T04:15:13Z | 2026-07-21T04:33:38Z | pages-w7ow |
Wire zstd-compressed tar archives through the dispatch foundation.
- Crate:
ruzstd = \"0.8\"in[dependencies](pure-Rust, no_std-capable zstd decoder; wasm-safe). - Streaming path: raw bytes ->
ruzstd::StreamingDecoder(implements io::Read) ->build_tar_manifest. Each tar entry Read flows throughread_entry_limitedunchanged. - Detect via zstd magic
28 b5 2f fd. - Tests: happy path, missing index.html, path traversal, size limits, zstd tar-bomb rejected by the streaming guard.
ruzstdis decode-focused — build .tar.zst fixtures with a real zstd encoder available in the dev shell, or vendor a small precompressed fixture; prefer generating in-test if an encoder crate is acceptable (else document the fixture).
Summary of Changes
zstd via ruzstd 0.8 StreamingDecoder (pure Rust). Streaming path preserves the bomb guard. Fixtures built with ruzstd's own encoder (no C dev-dep). Tests: happy, missing index, traversal, limits, streaming bomb, corrupt-frame.