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

Commit 373a01c3 authored by Alex Buynytskyy's avatar Alex Buynytskyy
Browse files

Detect duplicate addChecksums calls.

Bug: 160605420
Test: atest ChecksumsTest
Change-Id: I1a56865b0b27845494a337bd1d8fb49ca346af2f
parent 15254305
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1227,6 +1227,7 @@ public class PackageInstaller {
         *                  {@link PackageManager#requestChecksums}.
         * @throws SecurityException if called after the session has been
         *                           committed or abandoned.
         * @throws IllegalStateException if checksums for this file have already been added.
         * @deprecated  do not use installer-provided checksums,
         *              use platform-enforced checksums
         *              e.g. {@link Checksum#TYPE_WHOLE_MERKLE_ROOT_4K_SHA256}
+7 −5
Original line number Diff line number Diff line
@@ -991,12 +991,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            assertCallerIsOwnerOrRootLocked();
            assertPreparedAndNotCommittedOrDestroyedLocked("addChecksums");

            for (Checksum checksum : checksums) {
                List<CertifiedChecksum> fileChecksums = mChecksums.get(name);
                if (fileChecksums == null) {
                    fileChecksums = new ArrayList<>();
                    mChecksums.put(name, fileChecksums);
            if (mChecksums.containsKey(name)) {
                throw new IllegalStateException("Duplicate checksums.");
            }

            List<CertifiedChecksum> fileChecksums = new ArrayList<>();
            mChecksums.put(name, fileChecksums);

            for (Checksum checksum : checksums) {
                fileChecksums.add(new CertifiedChecksum(checksum, initiatingPackageName,
                        mainCertificateBytes));
            }