Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR changes tar-stream so that it explicitly checks the header type via the
magic
andversion
fields in order to ensure proper handling of the record. An exception is thrown if an unsupported header type is encountered. Supported header types are posix and gnu/oldgnu. To the best of my knowledge, these are already implicitly supported in tar-stream.I was motivated to make this change after finding that tar-stream failed to properly extract files from a gnu-formatted tarball (see
oldgnu_header
, below). Offset 345 for posix tarballs (as handled by tar-stream) is the name prefix (posix_header.prefix
), where gnu-formatted headers have the incremental access time (oldgnu_header.atime
) at that offset. When extracting gnu-formatted binaries witholdgnu_header.atime
set, a file that should be extracted to the root would be placed in[octal atime value]/[filename]
(ex:13455654047/foo.txt
). By detecting that we are processing a gnu-formatted header, tar-stream will no longer mistake the access time field for a prefix.From the gnu tar documentation: