aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Shoemaker <roland@golang.org>2022-12-06 11:58:10 -0800
committerGopher Robot <gobot@golang.org>2022-12-06 20:19:47 +0000
commit5167e5cd64b2d4710dd8a20d2a599674d5d94861 (patch)
treecc47c9c030df609af5ce3764d9bcbfbaab5be81c
parent03bf6f4917c1c8cd883dfa1618b90a95b9192f9a (diff)
downloadgo-5167e5cd64b2d4710dd8a20d2a599674d5d94861.tar.gz
go-5167e5cd64b2d4710dd8a20d2a599674d5d94861.zip
archive/zip: only consider UncompressedSize when checking dirs
CL 454475 switched from checking CompressedSize to UncompressedSize when determining if we should consider an archive malformed because it contains data and added a test for an example of this (a JAR). We should also remove the hasDataDescriptor check, since that is basically an alias for CompressedSize > 0. The test didn't catch this because we didn't actually attempt to read from the returned reader. Change-Id: Ibc4c1aa9c3a733f3ebf4a956d1e2f8f4900a29cd Reviewed-on: https://go-review.googlesource.com/c/go/+/455523 Run-TryBot: Roland Shoemaker <roland@golang.org> Reviewed-by: Julie Qiu <julieqiu@google.com> Auto-Submit: Roland Shoemaker <roland@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
-rw-r--r--src/archive/zip/reader.go2
-rw-r--r--src/archive/zip/reader_test.go5
2 files changed, 5 insertions, 2 deletions
diff --git a/src/archive/zip/reader.go b/src/archive/zip/reader.go
index 449fc73c0f..10e835fe86 100644
--- a/src/archive/zip/reader.go
+++ b/src/archive/zip/reader.go
@@ -237,7 +237,7 @@ func (f *File) Open() (io.ReadCloser, error) {
// 0. We still want to fail when a directory has associated uncompressed
// data, but we are tolerant of cases where the uncompressed size is
// zero but compressed size is not.
- if f.UncompressedSize64 != 0 || f.hasDataDescriptor() {
+ if f.UncompressedSize64 != 0 {
return &dirReader{ErrFormat}, nil
} else {
return &dirReader{io.EOF}, nil
diff --git a/src/archive/zip/reader_test.go b/src/archive/zip/reader_test.go
index 94cf5479fc..1594b2648e 100644
--- a/src/archive/zip/reader_test.go
+++ b/src/archive/zip/reader_test.go
@@ -1702,9 +1702,12 @@ func TestCompressedDirectory(t *testing.T) {
t.Fatalf("unexpected error: %v", err)
}
for _, f := range r.File {
- _, err = f.Open()
+ r, err := f.Open()
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
+ if _, err := io.Copy(io.Discard, r); err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
}
}