From e4c314cd797cf888e5abd89c7b8b9f8f62ff4d7a Mon Sep 17 00:00:00 2001 From: John Wu Date: Tue, 12 Apr 2022 22:50:20 +0000 Subject: [PATCH] Null check before accessing mRemovedInfo in PMS When a system APK removes sharedUserId after an OTA, PMS will crash as it attempts to access mRemovedInfo. mRemovedInfo will not be set during boot time, as package broadcasts are not sent for system image changes. Bug: 229017590 Test: manual Change-Id: I162675e79bec103420aa26522f164b7f72d7c43f --- .../java/com/android/server/pm/InstallPackageHelper.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index 77d37dc377a23..bbdb7ebfe8870 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -266,8 +266,11 @@ final class InstallPackageHelper { // Prune unused SharedUserSetting if (mPm.mSettings.checkAndPruneSharedUserLPw(requestSharedUserSetting, false)) { // Set the app ID in removed info for UID_REMOVED broadcasts - reconciledPkg.mInstallResult.mRemovedInfo.mRemovedAppId = - requestSharedUserSetting.mAppId; + if (reconciledPkg.mInstallResult != null + && reconciledPkg.mInstallResult.mRemovedInfo != null) { + reconciledPkg.mInstallResult.mRemovedInfo.mRemovedAppId = + requestSharedUserSetting.mAppId; + } } } }