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
This commit is contained in:
Colin Cross 2018-06-22 16:37:47 -07:00
parent 5c733856bd
commit b88c4dfb87
1 changed files with 2 additions and 0 deletions

View File

@ -795,6 +795,8 @@ func (z *ZipWriter) writeSymlink(rel, file string) error {
return err return err
} }
fileHeader.CRC32 = crc32.ChecksumIEEE([]byte(dest))
ze := make(chan *zipEntry, 1) ze := make(chan *zipEntry, 1)
futureReaders := make(chan chan io.Reader, 1) futureReaders := make(chan chan io.Reader, 1)
futureReader := make(chan io.Reader, 1) futureReader := make(chan io.Reader, 1)