diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/minizip/unzip.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/contrib/minizip/unzip.c b/contrib/minizip/unzip.c index bcfb941..b16a75e 100644 --- a/contrib/minizip/unzip.c +++ b/contrib/minizip/unzip.c | |||
@@ -1857,6 +1857,9 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len) | |||
1857 | err = Z_DATA_ERROR; | 1857 | err = Z_DATA_ERROR; |
1858 | 1858 | ||
1859 | uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; | 1859 | uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; |
1860 | /* Detect overflow, because z_stream.total_out is uLong (32 bits) */ | ||
1861 | if (uTotalOutAfter<uTotalOutBefore) | ||
1862 | uTotalOutAfter += 1LL << 32; /* Add maximum value of uLong + 1 */ | ||
1860 | uOutThis = uTotalOutAfter-uTotalOutBefore; | 1863 | uOutThis = uTotalOutAfter-uTotalOutBefore; |
1861 | 1864 | ||
1862 | pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uOutThis; | 1865 | pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uOutThis; |