Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 867e60db authored by Tao Bao's avatar Tao Bao Committed by Gerrit Code Review
Browse files

Merge "Fix: full ota package larger than 2GB fails to upgrade"

parents 38234f4b 2584f9c2
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -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;
+5 −5
Original line number Diff line number Diff line
@@ -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;
}