summaryrefslogtreecommitdiff
path: root/zip
diff options
context:
space:
mode:
author Colin Cross <ccross@android.com> 2018-06-22 16:37:47 -0700
committer Colin Cross <ccross@android.com> 2018-06-23 03:23:19 +0000
commitb88c4dfb8794c0618067c127794445e8fd821c33 (patch)
tree4f0adda92a8c7a282cd455a33ba774487b4a5c32 /zip
parent5c733856bd8e16bbd739abc388fa8ac43f073c92 (diff)
soong_zip: set local header crc for symlinks
Getting a crc into the local header requires setting it before writing the payload, or using a streaming data header after the payload with the crc. Stored (uncompressed) entries are not allowed to use a streaming data header. Symlinks are always stored uncompressed, so set the crc in the file header before writing the payload. Test: m checkbuild Test: zipdetails on zip with symlink created with soong_zip has same crc in local header and central header. Bug: 110716403 Change-Id: I66c5d41f0a5b23b828d6a03a3790afedc5a97625
Diffstat (limited to 'zip')
-rw-r--r--zip/zip.go2
1 files changed, 2 insertions, 0 deletions
diff --git a/zip/zip.go b/zip/zip.go
index b7e37646e..4d29f6693 100644
--- a/zip/zip.go
+++ b/zip/zip.go
@@ -795,6 +795,8 @@ func (z *ZipWriter) writeSymlink(rel, file string) error {
return err
}
+ fileHeader.CRC32 = crc32.ChecksumIEEE([]byte(dest))
+
ze := make(chan *zipEntry, 1)
futureReaders := make(chan chan io.Reader, 1)
futureReader := make(chan io.Reader, 1)