]> git.lizzy.rs Git - zlib.git/commit
Fix unztell64() in minizip to work past 4GB. (Daniël Hörchner)
authorMark Adler <madler@alumni.caltech.edu>
Sat, 1 Jan 2022 20:09:30 +0000 (12:09 -0800)
committerMark Adler <madler@alumni.caltech.edu>
Sat, 1 Jan 2022 20:09:30 +0000 (12:09 -0800)
commit58ca4e57ce7d76734d8b5afa03d205f694419b17
tree985010c20c77684e9825fd1e134b602800d28773
parentb135d46eaf5ba36b549be9db857c580f00b6182a
Fix unztell64() in minizip to work past 4GB. (Daniël Hörchner)

The issue is that unztell64() does not return the correct value if
the position in the current file (in the ZIP archive) is beyond 4
GB. The cause is that unzReadCurrentFile() does not account for
pfile_in_zip_read_info->stream.total_out at line 1854 of unzip.c
wrapping around (it is a 32-bit variable). So, on line 1860
uTotalOutAfter can be *less* than uTotalOutBefore, propagating the
wraparound to uOutThis, which in turn is added to
pfile_in_zip_read_info->total_out_64. That has the effect of
subtracting 4 GB.
contrib/minizip/unzip.c