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

Commit 6c65a56d authored by Yurii Zubrytskyi's avatar Yurii Zubrytskyi
Browse files

[incfs] Fix the block size calculation in .so extraction

Bug: 154044009
Test: adb install megacity.apk && adb shell cat *.so
Change-Id: I0069c8cfa74c83810152d917a2bac9cdaf24d6a7
parent 14b289e6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1337,13 +1337,13 @@ void IncrementalService::extractZipFile(const IfsMountPtr& ifs, ZipArchiveHandle
    std::vector<IncFsDataBlock> instructions(numBlocks);
    auto remainingData = std::span(libData.get(), entry.uncompressed_length);
    for (int i = 0; i < numBlocks; i++) {
        const auto blockSize = std::min<uint16_t>(constants().blockSize, remainingData.size());
        const auto blockSize = std::min<long>(constants().blockSize, remainingData.size());
        instructions[i] = IncFsDataBlock{
                .fileFd = writeFd.get(),
                .pageIndex = static_cast<IncFsBlockIndex>(i),
                .compression = INCFS_COMPRESSION_KIND_NONE,
                .kind = INCFS_BLOCK_KIND_DATA,
                .dataSize = blockSize,
                .dataSize = static_cast<uint32_t>(blockSize),
                .data = reinterpret_cast<const char*>(remainingData.data()),
        };
        remainingData = remainingData.subspan(blockSize);