Merge "Fix: full ota package larger than 2GB fails to upgrade"
This commit is contained in:
16
minzip/Zip.c
16
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;
|
||||
|
||||
10
minzip/Zip.h
10
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user