zip/unzip: add security-patched archive workflows - #17
Conversation
094f76a to
b64b789
Compare
9a45f06 to
cc490f5
Compare
Exact-head update after tap #70This branch is now based directly on tap main Zip blob Through Kandelo's dev shell, the combined eight-formula syntax/style pass is clean, the merged support suite passes 29/216, and branch diff checks pass. A fresh exact-head devil review is still required. This supersedes the older restack head/base/hash paragraph in the PR body. Source materialization remains gated on Automattic/kandelo#882; no bottle, sidecar, receipt, provenance, or poured-install claim is made by this update. |
|
Independent devil's-advocate review: ACCEPT exact head Exact formula evidence:
The reviewer recreated both patched source trees and ABI 18 builds. Upstream install targets produced Zip's four binaries/four manpages and UnZip's three Wasm binaries plus Runtime coverage passed for Zip create/list/ Portable Ruby support tests passed (29 runs, 216 assertions), as did syntax, |
|
Final devil's-advocate disposition: ACCEPT source merge at |
Purpose
Add Info-ZIP creation, extraction, inspection, and streaming tools as first-class Kandelo Homebrew formulae, with a truthful UnZip-to-Zip dependency order and the maintained downstream security patch sets.
Formula contract
debian/patches/series, includinghandle_windows_zip64.patch, the manpage correction, andCVE-2021-4217.patch.zip -Texecutesunzip.funzip; makezipinfothe actual argv0 alias ofunzip.The final modules do not import
kernel.kernel_fork. Info-ZIP's process paths lower through Kandeloposix_spawn, so fork continuation instrumentation is neither needed nor added.Source acceptance
These source formulae may merge independently after a fresh source-only devil review. The PR contains no bottle block, sidecar, archive, receipt, provenance metadata, or other binary artifact, and merging it does not claim that either bottle is published or installable.
Existing runtime evidence
Earlier ABI 18 builds independently reproduced all declared source and patch hashes and verified the UnZip patch list against Ubuntu's exact 32-entry series. Two clean builds produced byte-identical executables.
Literal tests covered Deflate listing/extraction,
unzip -Z,zipinfoargv0 dispatch, realfunzipstreaming, missing-archive status 9, Zip creation/listing,zip -Tthrough exact dependency-keg bytes, and nothing-to-do status 12. Chromium exercised the same built bytes forunzip -p,zipinfo -h, andzip -T. All three executables reported ABI 18, contained no legacy Asyncify or fork-continuation surface, and embedded no staging, workspace, Nix, or temporary path.Those builds are historical implementation evidence only. Their hashes are not publishable bottle provenance.
Current exact-head validation
The source series is based on exact tap
main36df17ec5395fb4531fddc2d9ab769eb1e6c19ca; current head is29f9da9ffd5736259e52f00bf836ade107453668.6256025a4ae0ce90d4d2a8f51f92953040aaeecad042743f77f71c50cc167b14for Zip andde7a4f30daae3d07cd84414d9c1b48ced48ee88e72a572be4f675cc5fae1e908for UnZip.zipgrep, the realzipinfohardlink, and five manpages.-T,zipnote,zipcloak,zipsplit, UnZip list/extract/zipinfo/funzip/status 9, andzipgrepwith only ABI 18 Dash plus the documented base tools.kandelo.sfxconstruction ran in ABI 18 Kandelo:-tverified both entries and extraction produced byte-exact 1216/864-byte files. The documentedllvm-objcopy --add-section kandelo.sfx=...path independently produced valid runnable SFX bytes.brew style, andgit diff --checkpassed; the worktree is clean.An independent devil's-advocate review accepted this exact head. No bottle, sidecar, receipt, or provenance artifact is included.
Durable zipgrep follow-up
The current
test doblock verifies the installedzipgrepscript and its command surface; historical exact-head Node evidence exercised the script with ABI 18 Dash and its base tools. Before bottle publication, the merged-head validation must promote that real shell/egrep/sed/basename/unzip execution path into durable automated coverage and rerun it against the poured bytes. This is a test-automation gate, not a Formula source or dependency correction.Platform follow-up
Automattic/kandelo#877 owns the legacy registry's incorrect
funzip -> unzipmapping. It does not gate the tap source: this formula builds, installs, and tests upstream's real standalonefunzipand adds no compatibility wrapper.Bottle gates
Publication is dependency-first: publish, pour, and verify the UnZip bottle before building Zip, so
zip -Tconsumes prior Homebrew bottle bytes and its receipt/provenance records that dependency.Trusted bottle publication remains gated on Automattic/kandelo#842, #881, #882, #887, #890, and the reworked #885; #887 is required because both formulae consume Binaryen and WABT as Homebrew build-dependency bottles; tap #22 if a branch dry run is needed; and fresh exact merged-head ABI 18 builds with reviewed sidecars and stock-guest Node/Chromium pour tests against published bytes. Automattic/kandelo#873, #874, and #888 do not apply because these direct Makefile builds neither configure nor fork-instrument.
Automattic/kandelo#867 is the merged ABI 18 baseline, not a pending gate. No main-repository or ABI change is included here.