summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Winson <chiuwinson@google.com> 2021-02-05 10:07:47 -0800
committer Winson Chiu <chiuwinson@google.com> 2021-02-05 18:14:06 +0000
commit779499c45c79a6a0dcd43f9737ad8de38b2c9ce7 (patch)
tree2d5f218ff8b65f4bddc480579c639b560916a65a
parent804a79e7b0a99eb9591b25d6c126cc39177239b6 (diff)
Break out of DomainVerificationProxyV1 if info is null
This was found in a presubmit test run, and is probably the result of a race or an invalid package state. Or even a broken v1 verifier implementation. For now, just exit. This failure means the package state is gone, so continuing verification for it is meaningless. Bug: 179493004 Test: manual, run v1 verification Change-Id: Idcfaac95fbd16e7a0981b3d27a2a074c2ede5b1e
-rw-r--r--services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1.java b/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1.java
index eab89e987885..82a330da6e2e 100644
--- a/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1.java
+++ b/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1.java
@@ -37,10 +37,10 @@ import android.util.Pair;
import android.util.Slog;
import com.android.internal.annotations.GuardedBy;
+import com.android.server.pm.parsing.pkg.AndroidPackage;
import com.android.server.pm.verify.domain.DomainVerificationCollector;
import com.android.server.pm.verify.domain.DomainVerificationManagerInternal;
import com.android.server.pm.verify.domain.DomainVerificationMessageCodes;
-import com.android.server.pm.parsing.pkg.AndroidPackage;
import java.util.Collections;
import java.util.List;
@@ -152,18 +152,22 @@ public class DomainVerificationProxyV1 implements DomainVerificationProxy {
UUID domainSetId = pair.first;
String packageName = pair.second;
- DomainVerificationInfo set;
+ DomainVerificationInfo info;
try {
- set = mManager.getDomainVerificationInfo(packageName);
+ info = mManager.getDomainVerificationInfo(packageName);
} catch (PackageManager.NameNotFoundException ignored) {
return true;
}
- if (!Objects.equals(domainSetId, set.getIdentifier())) {
+ if (info == null) {
+ return true;
+ }
+
+ if (!Objects.equals(domainSetId, info.getIdentifier())) {
return true;
}
- Set<String> successfulDomains = new ArraySet<>(set.getHostToStateMap().keySet());
+ Set<String> successfulDomains = new ArraySet<>(info.getHostToStateMap().keySet());
successfulDomains.removeAll(response.failedDomains);
int callingUid = response.callingUid;