From 779499c45c79a6a0dcd43f9737ad8de38b2c9ce7 Mon Sep 17 00:00:00 2001 From: Winson Date: Fri, 5 Feb 2021 10:07:47 -0800 Subject: 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 --- .../pm/verify/domain/proxy/DomainVerificationProxyV1.java | 14 +++++++++----- 1 file 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 successfulDomains = new ArraySet<>(set.getHostToStateMap().keySet()); + Set successfulDomains = new ArraySet<>(info.getHostToStateMap().keySet()); successfulDomains.removeAll(response.failedDomains); int callingUid = response.callingUid; -- cgit v1.2.3-59-g8ed1b