diff options
| 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 |
| commit | b88c4dfb8794c0618067c127794445e8fd821c33 (patch) | |
| tree | 4f0adda92a8c7a282cd455a33ba774487b4a5c32 /zip | |
| parent | 5c733856bd8e16bbd739abc388fa8ac43f073c92 (diff) | |
| download | build_soong-b88c4dfb8794c0618067c127794445e8fd821c33.tar.gz build_soong-b88c4dfb8794c0618067c127794445e8fd821c33.tar.bz2 build_soong-b88c4dfb8794c0618067c127794445e8fd821c33.zip | |
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.go | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -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) |
