You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Enhancement] ZIP archive inspection and safe selective extraction #7
Complement Tuck's Create ZIP Archive with fast inspect contents and extract selected entries capabilities, without requiring a full archive-management app.
Scope
Contextual ZIP action to display a searchable, sortable entry list with paths, compressed/original sizes, timestamps and types.
Extract All to a collision-safe named folder; Extract Selected… entries to a chosen directory. Maintain nested directory structure.
Support widely compatible ZIP methods; detect and clearly report unsupported methods and encrypted/password-protected entries. Never pretend .7z is a regular .zip.
Prevent Zip Slip (absolute/../ paths), symlink traversal, archive bombs, extreme expansion ratios, duplicate/ambiguous names and overwrite attacks.
Preserve standard content/timestamps/permissions when safe; handle Unix symlinks and macOS metadata cautiously.
Existing ZIP creation still outputs standard Deflate ZIP and extracts successfully with Archive Utility.
Preview does not extract entire archives to internal storage or execute code from entries.
Selected entries extract with correct bytes; collisions require safe name resolution/confirmation.
Malicious/malformed archives cannot write outside destination or damage pre-existing files.
Encrypted/unsupported archives produce explicit guidance.
Tests
Round trips with nested Unicode paths, empty folders, large archives, symlinks, hidden resource forks, zip bombs (bounded fixtures), path traversal and name conflicts. No destructive cleanup outside job-owned scratch.
Implementation merged in PR #24: ZIP directory inspection/search, selective extraction into a new staged folder and conservative validation of encryption, symlinks, names and expanded size. PR #30 subsequently passed macOS CI and merged a fix for option-like/glob-pattern filenames. Still open for physical Finder extraction, unsupported ZIP compatibility and volume/cancellation checks.
ZIP extraction safety gate merged.PR #34 landed on main at 7f0e70668d4c7290366170f7e38739f89b3aaa4e. The extractor now streams a bounded (2 GB max) archive snapshot into a private regular file on the selected destination volume, validates that same snapshot including local-vs-central header names/method/flags/bounds, and invokes unzip only against that snapshot. This closes the source replacement and symlink-copy race, building on #30's option/glob selector validation. Focused tests cover malformed local headers, invalid requested entries, symlinked source archives, traversal and unsafe selectors. Exact-head macOS CI passed all 13 test suites and the signed Tuck app/Finder extension build. Issue remains open for physical Finder extraction, fresh-volume, ZIP compatibility and release acceptance checks; passing CI does not establish all human QA criteria.
Activity
raiseCatError commentedon Oct 16, 2026
Implementation merged in PR #24: ZIP directory inspection/search, selective extraction into a new staged folder and conservative validation of encryption, symlinks, names and expanded size. PR #30 subsequently passed macOS CI and merged a fix for option-like/glob-pattern filenames. Still open for physical Finder extraction, unsupported ZIP compatibility and volume/cancellation checks.
raiseCatError commentedon Oct 16, 2026
ZIP extraction safety gate merged. PR #34 landed on
mainat7f0e70668d4c7290366170f7e38739f89b3aaa4e. The extractor now streams a bounded (2 GB max) archive snapshot into a private regular file on the selected destination volume, validates that same snapshot including local-vs-central header names/method/flags/bounds, and invokes unzip only against that snapshot. This closes the source replacement and symlink-copy race, building on #30's option/glob selector validation. Focused tests cover malformed local headers, invalid requested entries, symlinked source archives, traversal and unsafe selectors. Exact-head macOS CI passed all 13 test suites and the signed Tuck app/Finder extension build. Issue remains open for physical Finder extraction, fresh-volume, ZIP compatibility and release acceptance checks; passing CI does not establish all human QA criteria.