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

Commit 8b1e0722 authored by Alex Buynytskyy's avatar Alex Buynytskyy
Browse files

Verify incoming checksum.

Bug: 307288067
Test: atest ChecksumsTest
Change-Id: I857f1c17affd746b1416dcbd05b337a623632919
parent 01950b43
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -138,6 +138,13 @@ public final class Checksum implements Parcelable {
    @Retention(RetentionPolicy.SOURCE)
    public @interface TypeMask {}

    /**
     * Max size of checksum in bytes.
     * sizeof(SHA512) == 64 bytes
     * @hide
     */
    public static final int MAX_CHECKSUM_SIZE_BYTES = 64;

    /**
     * Serialize checksum to the stream in binary format.
     * @hide
@@ -276,10 +283,10 @@ public final class Checksum implements Parcelable {
    };

    @DataClass.Generated(
            time = 1619810358402L,
            time = 1700002689652L,
            codegenVersion = "1.0.23",
            sourceFile = "frameworks/base/core/java/android/content/pm/Checksum.java",
            inputSignatures = "public static final  int TYPE_WHOLE_MERKLE_ROOT_4K_SHA256\npublic static final @java.lang.Deprecated int TYPE_WHOLE_MD5\npublic static final @java.lang.Deprecated int TYPE_WHOLE_SHA1\npublic static final @java.lang.Deprecated int TYPE_WHOLE_SHA256\npublic static final @java.lang.Deprecated int TYPE_WHOLE_SHA512\npublic static final  int TYPE_PARTIAL_MERKLE_ROOT_1M_SHA256\npublic static final  int TYPE_PARTIAL_MERKLE_ROOT_1M_SHA512\nprivate final @android.content.pm.Checksum.Type int mType\nprivate final @android.annotation.NonNull byte[] mValue\npublic static  void writeToStream(java.io.DataOutputStream,android.content.pm.Checksum)\npublic static @android.annotation.NonNull android.content.pm.Checksum readFromStream(java.io.DataInputStream)\nclass Checksum extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstDefs=false)")
            inputSignatures = "public static final  int TYPE_WHOLE_MERKLE_ROOT_4K_SHA256\npublic static final @java.lang.Deprecated int TYPE_WHOLE_MD5\npublic static final @java.lang.Deprecated int TYPE_WHOLE_SHA1\npublic static final @java.lang.Deprecated int TYPE_WHOLE_SHA256\npublic static final @java.lang.Deprecated int TYPE_WHOLE_SHA512\npublic static final  int TYPE_PARTIAL_MERKLE_ROOT_1M_SHA256\npublic static final  int TYPE_PARTIAL_MERKLE_ROOT_1M_SHA512\npublic static final  int MAX_CHECKSUM_SIZE_BYTES\nprivate final @android.content.pm.Checksum.Type int mType\nprivate final @android.annotation.NonNull byte[] mValue\npublic static  void writeToStream(java.io.DataOutputStream,android.content.pm.Checksum)\npublic static @android.annotation.NonNull android.content.pm.Checksum readFromStream(java.io.DataInputStream)\nclass Checksum extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstDefs=false)")
    @Deprecated
    private void __metadata() {}

+7 −0
Original line number Diff line number Diff line
@@ -1616,6 +1616,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            }
        }

        for (Checksum checksum : checksums) {
            if (checksum.getValue() == null
                    || checksum.getValue().length > Checksum.MAX_CHECKSUM_SIZE_BYTES) {
                throw new IllegalArgumentException("Invalid checksum.");
            }
        }

        assertCallerIsOwnerOrRoot();
        synchronized (mLock) {
            assertPreparedAndNotCommittedOrDestroyedLocked("addChecksums");