Check for errors when reading the headers following the pax headers.
Fixes #11169.
Change-Id: Ifec4a949ec8df8b49fa7cb7a67eb826fe2282ad8
Reviewed-on: https://go-review.googlesource.com/11031
Reviewed-by: Russ Cox <rsc@golang.org>
// We actually read the whole file,
// but this skips alignment padding
tr.skipUnread()
+ if tr.err != nil {
+ return nil, tr.err
+ }
hdr = tr.readHeader()
+ if hdr == nil {
+ return nil, tr.err
+ }
mergePAX(hdr, headers)
// Check for a PAX format sparse file
t.Fatalf("expected %q, got %q", io.ErrUnexpectedEOF, err)
}
}
+
+// Do not panic if there are errors in header blocks after the pax header.
+// Issue 11169
+func TestIssue11169(t *testing.T) {
+ f, err := os.Open("testdata/issue11169.tar")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer f.Close()
+ r := NewReader(f)
+ _, err = r.Next()
+ if err == nil {
+ t.Fatal("Unexpected success")
+ }
+}