archive/tar: forbid NUL character in string fields
USTAR and GNU strings are NUL-terminated. Thus, we should never allow the NUL terminator, otherwise we will lose data round-trip. Relevant specification text: <<< The fields magic, uname, and gname are character strings each terminated by a NUL character. > > Technically, PAX keys and values should be UTF-8, but the observance > of invalid files in the wild causes us to be more liberal. > <<< > The <length> field, <blank>, <equals-sign>, and <newline> shown shall > be limited to the portable character set, as encoded in UTF-8. Thus, we only reject NULs in PAX keys, and NULs for PAX values representing the USTAR string fields (i.e., path, linkpath, uname, gname). These are treated more strictly because they represent strings that are typically represented as C-strings on POSIX systems. Change-Id: I305b794d9d966faad852ff660bd0b3b0964e52bf Reviewed-on: https://go-review.googlesource.com/14724 Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Showing
File added
File added
File added
Please register or sign in to comment