From 259403ef7f002b90567c70fd3df6d9fd69013299 Mon Sep 17 00:00:00 2001 From: Kweku Adams Date: Mon, 27 Apr 2020 09:25:07 -0700 Subject: [PATCH] Add null check for retrieved package. PackageManagerInternal.getPackage() states that the returned value can be null. Check that the returned object isn't null before calling any of its methods to avoid NullPointerExceptions. Bug: 154899364 Test: atest FrameworksServicesTests:AppStandbyControllerTests Change-Id: Ifcb200a4a0ed6582cc1a368c2949f0aaf32d7dd2 --- .../com/android/server/usage/AppStandbyController.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java index 3c1fafbc14955..24728dd8edca4 100644 --- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java +++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java @@ -110,6 +110,7 @@ import com.android.internal.util.ArrayUtils; import com.android.internal.util.ConcurrentUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; +import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.usage.AppIdleHistory.AppUsageHistory; import java.io.File; @@ -1862,10 +1863,15 @@ public class AppStandbyController implements AppStandbyInternal { public List getValidCrossProfileTargets(String pkg, int userId) { final int uid = mPackageManagerInternal.getPackageUidInternal(pkg, 0, userId); + final AndroidPackage aPkg = mPackageManagerInternal.getPackage(uid); if (uid < 0 - || !mPackageManagerInternal.getPackage(uid).isCrossProfile() + || aPkg == null + || !aPkg.isCrossProfile() || !mCrossProfileAppsInternal .verifyUidHasInteractAcrossProfilePermission(pkg, uid)) { + if (uid >= 0 && aPkg == null) { + Slog.wtf(TAG, "Null package retrieved for UID " + uid); + } return Collections.emptyList(); } return mCrossProfileAppsInternal.getTargetUserProfiles(pkg, userId);