]> Cypherpunks repositories - gostls13.git/commit
archive/tar: improve handling of directory paths
authorJoe Tsai <joetsai@digital-static.net>
Fri, 6 Oct 2017 08:40:58 +0000 (01:40 -0700)
committerJoe Tsai <thebrokentoaster@gmail.com>
Tue, 10 Oct 2017 20:11:26 +0000 (20:11 +0000)
commit4cd58c2f2687fc5930a3da2581da09e2e96f69f5
tree5202f0d1add6e08819620606bd1fecbf1bb610d9
parentd63de2871163dea94f3d5df83374f8b5e7e8677d
archive/tar: improve handling of directory paths

The USTAR format says:
<<<
Implementors should be aware that the previous file format did not include
a mechanism to archive directory type files.
For this reason, the convention of using a filename ending with
<slash> was adopted to specify a directory on the archive.
>>>

In light of this suggestion, make the following changes:
* Writer.WriteHeader refuses to encode a header where a file that
is obviously a file-type has a trailing slash in the name.
* formatter.formatString avoids encoding a trailing slash in the event
that the string is truncated (the full string will be encoded elsewhere,
so stripping the slash is safe).
* Reader.Next treats a TypeRegA (which is the zero value of Typeflag)
as a TypeDir if the name has a trailing slash.

Change-Id: Ibf27aa8234cce2032d92e5e5b28546c2f2ae5ef6
Reviewed-on: https://go-review.googlesource.com/69293
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/archive/tar/common.go
src/archive/tar/reader.go
src/archive/tar/reader_test.go
src/archive/tar/strconv.go
src/archive/tar/tar_test.go
src/archive/tar/testdata/trailing-slash.tar [new file with mode: 0644]
src/archive/tar/writer.go
src/archive/tar/writer_test.go