diff options
| author | 2024-12-12 09:18:05 -0800 | |
|---|---|---|
| committer | 2024-12-12 09:18:05 -0800 | |
| commit | be112773c3416c1676233c064d513e0822623bcc (patch) | |
| tree | 73395af4adf92cbd0fe51ac8294725ee8342e63c | |
| parent | accd8333ee7302bb05fe11811dd74f57f649d5d5 (diff) | |
| parent | 0f0ecabffeb97c04e51512bab00026b78211eb17 (diff) | |
Merge "Updated collectAppInfo to handle case where Android package removed uninstalled before BTS has a chance to measure the package split." into main
| -rw-r--r-- | services/core/java/com/android/server/BinaryTransparencyService.java | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/BinaryTransparencyService.java b/services/core/java/com/android/server/BinaryTransparencyService.java index 36dff89d9d61..778c6864282d 100644 --- a/services/core/java/com/android/server/BinaryTransparencyService.java +++ b/services/core/java/com/android/server/BinaryTransparencyService.java @@ -228,20 +228,31 @@ public class BinaryTransparencyService extends SystemService { computePackageSignerSha256Digests(packageState.getSigningInfo()); AndroidPackage pkg = packageState.getAndroidPackage(); - for (AndroidPackageSplit split : pkg.getSplits()) { + if(pkg != null) { + for (AndroidPackageSplit split : pkg.getSplits()) { + var appInfo = new IBinaryTransparencyService.AppInfo(); + appInfo.packageName = packageName; + appInfo.longVersion = versionCode; + appInfo.splitName = split.getName(); // base's split name is null + // Signer digests are consistent between splits, guaranteed by Package Manager. + appInfo.signerDigests = signerDigests; + appInfo.mbaStatus = mbaStatus; + + // Only digest and split name are different between splits. + Digest digest = measureApk(split.getPath()); + appInfo.digest = digest.value(); + appInfo.digestAlgorithm = digest.algorithm(); + + results.add(appInfo); + } + } else { + Slog.w(TAG, packageName + " APK file is not physically present," + + " skipping split and digest measurement"); var appInfo = new IBinaryTransparencyService.AppInfo(); appInfo.packageName = packageName; appInfo.longVersion = versionCode; - appInfo.splitName = split.getName(); // base's split name is null - // Signer digests are consistent between splits, guaranteed by Package Manager. appInfo.signerDigests = signerDigests; appInfo.mbaStatus = mbaStatus; - - // Only digest and split name are different between splits. - Digest digest = measureApk(split.getPath()); - appInfo.digest = digest.value(); - appInfo.digestAlgorithm = digest.algorithm(); - results.add(appInfo); } |