diff options
author | Brad Fitzpatrick <bradfitz@golang.org> | 2015-05-27 10:49:25 -0700 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2015-05-27 18:14:58 +0000 |
commit | 553f45a61e062abe1c3459adc288929fc8693746 (patch) | |
tree | 59c53cd09988f9c0ee1e8bed96f934d700af768f /src/archive/zip/reader_test.go | |
parent | 05d8f1d1664e6413756ed4e18392310b75501ff4 (diff) | |
download | go-553f45a61e062abe1c3459adc288929fc8693746.tar.gz go-553f45a61e062abe1c3459adc288929fc8693746.zip |
archive/zip: sanity check the TOC's declared number of files
Fixes #10956
Change-Id: If8517094f04250c4f722e1e899a237eb6e170eb9
Reviewed-on: https://go-review.googlesource.com/10421
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Andrew Gerrand <adg@golang.org>
Diffstat (limited to 'src/archive/zip/reader_test.go')
-rw-r--r-- | src/archive/zip/reader_test.go | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/archive/zip/reader_test.go b/src/archive/zip/reader_test.go index 6a8cab34cd..4806b89458 100644 --- a/src/archive/zip/reader_test.go +++ b/src/archive/zip/reader_test.go @@ -551,10 +551,7 @@ func TestIssue10957(t *testing.T) { "\v\x00\x00\x00\x00\x00") z, err := NewReader(bytes.NewReader(data), int64(len(data))) if err != nil { - if z != nil { - panic("non nil z") - } - return + t.Fatal(err) } for i, f := range z.File { r, err := f.Open() @@ -573,3 +570,15 @@ func TestIssue10957(t *testing.T) { r.Close() } } + +// Verify the number of files is sane. +func TestIssue10956(t *testing.T) { + data := []byte("PK\x06\x06PK\x06\a0000\x00\x00\x00\x00\x00\x00\x00\x00" + + "0000PK\x05\x06000000000000" + + "0000\v\x00000\x00\x00\x00\x00\x00\x00\x000") + _, err := NewReader(bytes.NewReader(data), int64(len(data))) + const want = "TOC declares impossible 3472328296227680304 files in 57 byte" + if err == nil && !strings.Contains(err.Error(), want) { + t.Errorf("error = %v; want %q", err, want) + } +} |