From 3fbc23aaf9e9bde90707544f68de330a57361979 Mon Sep 17 00:00:00 2001 From: Vinicius Tinti Date: Sun, 3 Oct 2021 18:26:54 -0300 Subject: [PATCH] archive/zip: lazy load file data descriptor Fixes #48374 Signed-off-by: Vinicius Tinti --- src/archive/zip/reader.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/archive/zip/reader.go b/src/archive/zip/reader.go index c91a8d00e6c1d4..efbe961e0ee763 100644 --- a/src/archive/zip/reader.go +++ b/src/archive/zip/reader.go @@ -125,7 +125,6 @@ func (z *Reader) init(r io.ReaderAt, size int64) error { if err != nil { return err } - f.readDataDescriptor() z.File = append(z.File, f) } if uint16(len(z.File)) != uint16(end.directoryRecords) { // only compare 16 bits here @@ -789,6 +788,8 @@ func (r *Reader) Open(name string) (fs.File, error) { if e.isDir { return &openDir{e, r.openReadDir(name), 0}, nil } + + e.file.readDataDescriptor() rc, err := e.file.Open() if err != nil { return nil, err