archive/tar: fallback to pre-Go1.8 behavior on certain GNU files
Prior to Go1.8, the Writer had a bug where it would output an invalid tar file in certain rare situations because the logic incorrectly believed that the old GNU format had a prefix field. This is wrong and leads to an output file that mangles the atime and ctime fields, which are often left unused. In order to continue reading tar files created by former, buggy versions of Go, we skeptically parse the atime and ctime fields. If we are unable to parse them and the prefix field looks like an ASCII string, then we fallback on the pre-Go1.8 behavior of treating these fields as the USTAR prefix field. Note that this will not use the fallback logic for all possible files generated by a pre-Go1.8 toolchain. If the generated file happened to have a prefix field that parses as valid atime and ctime fields (e.g., when they are valid octal strings), then it is impossible to distinguish between an valid GNU file and an invalid pre-Go1.8 file. Fixes #21005 Change-Id: Iebf5c67c08e0e46da6ee41a2e8b339f84030dd90 Reviewed-on: https://go-review.googlesource.com/53635 Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Showing
File added
Please
register
or
sign in
to comment