From 2584f9c24dcc86f23775e3b6c178ab41605d6d75 Mon Sep 17 00:00:00 2001 From: caozhiyuan Date: Fri, 11 Mar 2016 15:18:29 +0800 Subject: Fix: full ota package larger than 2GB fails to upgrade Change-Id: I45d9fab8739cc6fa8a0bacaca9238896118d9d7f Signed-off-by: diruomeng Signed-off-by: caozhiyuan --- minzip/Zip.c | 16 +++++++++------- minzip/Zip.h | 10 +++++----- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/minzip/Zip.c b/minzip/Zip.c index 38f939fb2..0f89835ca 100644 --- a/minzip/Zip.c +++ b/minzip/Zip.c @@ -91,7 +91,7 @@ enum { static void dumpEntry(const ZipEntry* pEntry) { LOGI(" %p '%.*s'\n", pEntry->fileName,pEntry->fileNameLen,pEntry->fileName); - LOGI(" off=%ld comp=%ld uncomp=%ld how=%d\n", pEntry->offset, + LOGI(" off=%u comp=%u uncomp=%u how=%d\n", pEntry->offset, pEntry->compLen, pEntry->uncompLen, pEntry->compression); } #endif @@ -505,7 +505,8 @@ static bool processDeflatedEntry(const ZipArchive *pArchive, const ZipEntry *pEntry, ProcessZipEntryContentsFunction processFunction, void *cookie) { - long result = -1; + bool success = false; + unsigned long totalOut = 0; unsigned char procBuf[32 * 1024]; z_stream zstream; int zerr; @@ -569,16 +570,17 @@ static bool processDeflatedEntry(const ZipArchive *pArchive, assert(zerr == Z_STREAM_END); /* other errors should've been caught */ // success! - result = zstream.total_out; + totalOut = zstream.total_out; + success = true; z_bail: inflateEnd(&zstream); /* free up any allocated structures */ bail: - if (result != pEntry->uncompLen) { - if (result != -1) // error already shown? - LOGW("Size mismatch on inflated file (%ld vs %ld)\n", - result, pEntry->uncompLen); + if (totalOut != pEntry->uncompLen) { + if (success) { // error already shown? + LOGW("Size mismatch on inflated file (%lu vs %u)\n", totalOut, pEntry->uncompLen); + } return false; } return true; diff --git a/minzip/Zip.h b/minzip/Zip.h index 86d8db597..e6b19e1f0 100644 --- a/minzip/Zip.h +++ b/minzip/Zip.h @@ -32,9 +32,9 @@ extern "C" { typedef struct ZipEntry { unsigned int fileNameLen; const char* fileName; // not null-terminated - long offset; - long compLen; - long uncompLen; + uint32_t offset; + uint32_t compLen; + uint32_t uncompLen; int compression; long modTime; long crc32; @@ -85,10 +85,10 @@ void mzCloseZipArchive(ZipArchive* pArchive); const ZipEntry* mzFindZipEntry(const ZipArchive* pArchive, const char* entryName); -INLINE long mzGetZipEntryOffset(const ZipEntry* pEntry) { +INLINE uint32_t mzGetZipEntryOffset(const ZipEntry* pEntry) { return pEntry->offset; } -INLINE long mzGetZipEntryUncompLen(const ZipEntry* pEntry) { +INLINE uint32_t mzGetZipEntryUncompLen(const ZipEntry* pEntry) { return pEntry->uncompLen; } -- cgit v1.2.3