aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/archive/tar/reader.go6
-rw-r--r--src/archive/tar/reader_test.go11
-rw-r--r--src/archive/tar/testdata/ustar-file-devs.tarbin0 -> 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
new file mode 100644
index 0000000000..146e25b79d
--- /dev/null
+++ b/src/archive/tar/testdata/ustar-file-devs.tar
Binary files differ