1 Commits (36d13cf2661b1631ca34abda26956206a9c15c12)

Author SHA1 Message Date
Elijah Voigt f42ae56bb4 fix(pages): normalize '.' path segments so ./-prefixed tar entries upload
GNU tar prefixes every entry with ./ when archiving a directory
(tar czf out.tgz . yields ./index.html, ./bin_bg.wasm, …). The path
validator rejected any '.' segment as traversal, so such tarballs failed
with "archive entry has an unsafe path: './...'" and their ./index.html
never satisfied the root-index.html requirement — making ./-prefixed
archives unusable. (.wasm was never the issue: extensions aren't checked
and mime.rs maps .wasm to application/wasm.)

check_entry_path now strips '.' segments (leading and interior) and
returns the normalized path used as the R2 key, while still rejecting
'..', absolute paths, backslashes, NUL, drive letters, empty (//)
segments, and names that normalize to nothing; depth is measured on the
normalized path. Both the zip and tar manifest builders store the
normalized name. +10 tests.

Bean: pages-aalu.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 day ago