Skip to content

Commit

Permalink
Merge pull request #2768 from github/smowton/fix/zstd-tarball-trailin…
Browse files Browse the repository at this point in the history
…g-zeros

Pass `--ignore-zeros` to `tar` when decompressing `zstd`-compressed tarballs
  • Loading branch information
henrymercer authored Feb 18, 2025
2 parents acadfed + c4158ff commit 1bb15d0
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 3 deletions.
11 changes: 10 additions & 1 deletion lib/tar.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion lib/tar.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 10 additions & 1 deletion src/tar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,16 @@ export async function extractTarZst(

try {
// Initialize args
const args = ["-x", "--zstd"];
//
// `--ignore-zeros` means that trailing zero bytes at the end of an archive will be read
// by `tar` in case a further concatenated archive follows. Otherwise when a tarball built
// by GNU tar, which writes many trailing zeroes, is read by BSD tar, which expects less, then
// BSD tar can hang up the pipe to its filter program early, and if that program is `zstd`
// then it will try to write the remaining zeroes, get an EPIPE error because `tar` has closed
// its end of the pipe, return 1, and `tar` will pass the error along.
//
// See also https://github.com/facebook/zstd/issues/4294
const args = ["-x", "--zstd", "--ignore-zeros"];

if (tarVersion.type === "gnu") {
// Suppress warnings when using GNU tar to extract archives created by BSD tar
Expand Down

0 comments on commit 1bb15d0

Please sign in to comment.