Detect duplicate addChecksums calls.
Bug: 160605420 Test: atest ChecksumsTest Change-Id: I1a56865b0b27845494a337bd1d8fb49ca346af2f
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user