diff options
| author | 2021-02-05 10:07:47 -0800 | |
|---|---|---|
| committer | 2021-02-05 18:14:06 +0000 | |
| commit | 779499c45c79a6a0dcd43f9737ad8de38b2c9ce7 (patch) | |
| tree | 2d5f218ff8b65f4bddc480579c639b560916a65a | |
| parent | 804a79e7b0a99eb9591b25d6c126cc39177239b6 (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.java | 14 |
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; |