Summary
TarReader accepts an embedded NUL in an extended-attribute PAX keyword. The
reproduction archive is Go's open-source pax-nul-xattrs.tar
fixture; Go archive/tar rejects it while the other maintained readers accept.
Tested at 1ac1199559a1b96f0f953ac99520ccc296503808.
Observed behavior
The record keyword contains SCHILY.xattr.null\0. Tar-codec classifies it as
vendor metadata and returns the member.
Expected behavior
Consider rejecting NUL-bearing PAX keywords before vendor or xattr policy is
applied.
Impact
An xattr name can acquire different identities across Rust strings, C APIs, and
filesystem interfaces.
Summary
TarReaderaccepts an embedded NUL in an extended-attribute PAX keyword. Thereproduction archive is Go's open-source
pax-nul-xattrs.tarfixture; Go
archive/tarrejects it while the other maintained readers accept.Tested at
1ac1199559a1b96f0f953ac99520ccc296503808.Observed behavior
The record keyword contains
SCHILY.xattr.null\0. Tar-codec classifies it asvendor metadata and returns the member.
Expected behavior
Consider rejecting NUL-bearing PAX keywords before vendor or xattr policy is
applied.
Impact
An xattr name can acquire different identities across Rust strings, C APIs, and
filesystem interfaces.