summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/BinaryTransparencyService.java29
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);
}