diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/archive/tar/reader.go | 6 | ||||
| -rw-r--r-- | src/archive/tar/reader_test.go | 11 | ||||
| -rw-r--r-- | src/archive/tar/testdata/ustar-file-devs.tar | bin | 0 -> 1536 bytes |
3 files changed, 13 insertions, 4 deletions
diff --git a/src/archive/tar/reader.go b/src/archive/tar/reader.go index 21c0330420..98f6ea86fa 100644 --- a/src/archive/tar/reader.go +++ b/src/archive/tar/reader.go @@ -468,10 +468,8 @@ func (tr *Reader) readHeader() (*Header, *block, error) { ustar := tr.blk.USTAR() hdr.Uname = p.parseString(ustar.UserName()) hdr.Gname = p.parseString(ustar.GroupName()) - if hdr.Typeflag == TypeChar || hdr.Typeflag == TypeBlock { - hdr.Devmajor = p.parseNumeric(ustar.DevMajor()) - hdr.Devminor = p.parseNumeric(ustar.DevMinor()) - } + hdr.Devmajor = p.parseNumeric(ustar.DevMajor()) + hdr.Devminor = p.parseNumeric(ustar.DevMinor()) var prefix string switch format { diff --git a/src/archive/tar/reader_test.go b/src/archive/tar/reader_test.go index 3592a14842..79d271717c 100644 --- a/src/archive/tar/reader_test.go +++ b/src/archive/tar/reader_test.go @@ -384,6 +384,17 @@ func TestReader(t *testing.T) { Uid: 010000000, ModTime: time.Unix(0, 0), }}, + }, { + // USTAR archive with a regular entry with non-zero device numbers. + file: "testdata/ustar-file-devs.tar", + headers: []*Header{{ + Name: "file", + Mode: 0644, + Typeflag: '0', + ModTime: time.Unix(0, 0), + Devmajor: 1, + Devminor: 1, + }}, }} for _, v := range vectors { diff --git a/src/archive/tar/testdata/ustar-file-devs.tar b/src/archive/tar/testdata/ustar-file-devs.tar Binary files differnew file mode 100644 index 0000000000..146e25b79d --- /dev/null +++ b/src/archive/tar/testdata/ustar-file-devs.tar |
