From c2a62d40fa154620c3b3cb2db42756a2abaf062a Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 22 Aug 2023 14:22:28 -0700 Subject: Strip zip64 extras after writing local header when copying writeHeader generates zip64 extras that are correct for the local header, but incorrect for the central directory header. Strip the extras again after writeHeader so that the central directory header extras are recreated correctly. Test: Zip2Zip64 Bug: 296314205 Change-Id: I1ca6a5745a9f97426df6c111db444facdfa25b2e --- third_party/zip/android.go | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'third_party') diff --git a/third_party/zip/android.go b/third_party/zip/android.go index 0f41f6200..b97215689 100644 --- a/third_party/zip/android.go +++ b/third_party/zip/android.go @@ -56,6 +56,11 @@ func (w *Writer) CopyFrom(orig *File, newName string) error { if err := writeHeader(w.cw, fh); err != nil { return err } + + // Strip the extras again in case writeHeader added the local file header extras that are incorrect for the + // central directory. + fh.Extra = stripExtras(fh.Extra) + dataOffset, err := orig.DataOffset() if err != nil { return err -- cgit v1.2.3-59-g8ed1b