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

Commit 60a6786a authored by Alex Buynytskyy's avatar Alex Buynytskyy
Browse files

Obtain file length using delegated call to shell.

This also in-line with how non-streaming installation work.

Bug: 161805941
Test: Try to install .apk from /sdcard in SELinux permissive mode.
Change-Id: Id30c7ff43f1613f8073883df429e47f16e2617c3
parent 7d605ec3
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -3199,12 +3199,24 @@ class PackageManagerShellCommand extends ShellCommand {
        return 0;
    }

    private long getFileStatSize(File file) {
        final ParcelFileDescriptor pfd = openFileForSystem(file.getPath(), "r");
        if (pfd == null) {
            throw new IllegalArgumentException("Error: Can't open file: " + file.getPath());
        }
        try {
            return pfd.getStatSize();
        } finally {
            IoUtils.closeQuietly(pfd);
        }
    }

    private void processArgForLocalFile(String arg, PackageInstaller.Session session) {
        final String inPath = arg;

        final File file = new File(inPath);
        final String name = file.getName();
        final long size = file.length();
        final long size = getFileStatSize(file);
        final Metadata metadata = Metadata.forLocalFile(inPath);

        byte[] v4signatureBytes = null;