Merge "Detect duplicate addChecksums calls."

This commit is contained in:
Alex Buynytskyy
2020-11-18 02:24:51 +00:00
committed by Android (Google) Code Review
2 changed files with 8 additions and 5 deletions

View File

@@ -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}

View File

@@ -991,12 +991,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
assertCallerIsOwnerOrRootLocked();
assertPreparedAndNotCommittedOrDestroyedLocked("addChecksums");
if (mChecksums.containsKey(name)) {
throw new IllegalStateException("Duplicate checksums.");
}
List<CertifiedChecksum> fileChecksums = new ArrayList<>();
mChecksums.put(name, fileChecksums);
for (Checksum checksum : checksums) {
List<CertifiedChecksum> fileChecksums = mChecksums.get(name);
if (fileChecksums == null) {
fileChecksums = new ArrayList<>();
mChecksums.put(name, fileChecksums);
}
fileChecksums.add(new CertifiedChecksum(checksum, initiatingPackageName,
mainCertificateBytes));
}