aboutsummaryrefslogtreecommitdiff
path: root/src/archive/zip/reader_test.go
diff options
context:
space:
mode:
authorMichael Gehring <mg@ebfe.org>2015-06-13 11:38:34 +0200
committerAndrew Gerrand <adg@golang.org>2015-06-14 20:54:01 +0000
commit48d865ace1cf3b95bfa9e9525ee51bb18738b10c (patch)
treef162a67dd2911374ce71332c4e9d968b96880882 /src/archive/zip/reader_test.go
parent6a34206ca9aed71eeffba0e07e63a60b48c436bc (diff)
downloadgo-48d865ace1cf3b95bfa9e9525ee51bb18738b10c.tar.gz
go-48d865ace1cf3b95bfa9e9525ee51bb18738b10c.zip
archive/zip: fix returned error on truncated data descriptor
Return io.ErrUnexpectedEOF instead of io.EOF when reading a truncated data descriptor. Fixes #11146. Change-Id: Ia1905955165fd38af3c557d1fa1703ed8be893e2 Reviewed-on: https://go-review.googlesource.com/11070 Reviewed-by: Andrew Gerrand <adg@golang.org>
Diffstat (limited to 'src/archive/zip/reader_test.go')
-rw-r--r--src/archive/zip/reader_test.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/archive/zip/reader_test.go b/src/archive/zip/reader_test.go
index 4806b89458..547dd39048 100644
--- a/src/archive/zip/reader_test.go
+++ b/src/archive/zip/reader_test.go
@@ -582,3 +582,26 @@ func TestIssue10956(t *testing.T) {
t.Errorf("error = %v; want %q", err, want)
}
}
+
+// Verify we return ErrUnexpectedEOF when reading truncated data descriptor.
+func TestIssue11146(t *testing.T) {
+ data := []byte("PK\x03\x040000000000000000" +
+ "000000\x01\x00\x00\x000\x01\x00\x00\xff\xff0000" +
+ "0000000000000000PK\x01\x02" +
+ "0000\b0\b\x00000000000000" +
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x000000PK\x05\x06\x00\x00" +
+ "\x00\x0000\x01\x0000008\x00\x00\x00\x00\x00")
+ z, err := NewReader(bytes.NewReader(data), int64(len(data)))
+ if err != nil {
+ t.Fatal(err)
+ }
+ r, err := z.File[0].Open()
+ if err != nil {
+ t.Fatal(err)
+ }
+ _, err = ioutil.ReadAll(r)
+ if err != io.ErrUnexpectedEOF {
+ t.Errorf("File[0] error = %v; want io.ErrUnexpectedEOF", err)
+ }
+ r.Close()
+}