From c46674d0ca398844e5133fd5cec86427419d6a74 Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Wed, 3 May 2023 21:43:45 -0700 Subject: [PATCH] Fix NPE in PackageManagerInternal.getPackagesForAppId(). The original code would cause NPE for ejected non-shared-user packages, because List.of() requires the argument to be non-null and throws an NPE otherwise. In order to be consistent with the shared user case, we should return empty list when the APK isn't available. Bug: 263504888 Test: presubmit Change-Id: Iefd80188a8dc6be5cd49b3b813aa809fd3489fff --- .../core/java/com/android/server/pm/ComputerEngine.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java index 561d4dabd0e74..f4e0c1e5584dd 100644 --- a/services/core/java/com/android/server/pm/ComputerEngine.java +++ b/services/core/java/com/android/server/pm/ComputerEngine.java @@ -5624,7 +5624,12 @@ public class ComputerEngine implements Computer { return sus.getPackages(); } else if (settingBase instanceof PackageSetting) { final PackageSetting ps = (PackageSetting) settingBase; - return List.of(ps.getPkg()); + final AndroidPackage pkg = ps.getPkg(); + if (pkg != null) { + return Collections.singletonList(pkg); + } else { + return Collections.emptyList(); + } } else { return Collections.emptyList(); }