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

Commit 1257f150 authored by Jooyung Han's avatar Jooyung Han
Browse files

ZipUtils: use FileChannel#size

RandomAccessFile#length returns 0 for block devices while
FileChannel#size returns the correct size. ZipUtils should work with
block-device zip files when Android is running as a guest OS and
APK/APEX files are passed via block devices.

Bug: 193592496
Bug: 192366904
Test: FrameworksServicesTests
Change-Id: I6472e2a9051b92a5a778b4990b8e681492985d1a
parent ef140360
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -63,7 +63,8 @@ abstract class ZipUtils {
        // exactly the remaining bytes in the buffer. The search is bounded because the maximum
        // size of the comment field is 65535 bytes because the field is an unsigned 16-bit number.

        long fileSize = zip.length();
        // TODO(b/193592496) RandomAccessFile#length
        long fileSize = zip.getChannel().size();
        if (fileSize < ZIP_EOCD_REC_MIN_SIZE) {
            return null;
        }
@@ -110,7 +111,8 @@ abstract class ZipUtils {
            throw new IllegalArgumentException("maxCommentSize: " + maxCommentSize);
        }

        long fileSize = zip.length();
        // TODO(b/193592496) RandomAccessFile#length
        long fileSize = zip.getChannel().size();
        if (fileSize < ZIP_EOCD_REC_MIN_SIZE) {
            // No space for EoCD record in the file.
            return null;