summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author lijilou <lijilou@xiaomi.corp-partner.google.com> 2024-12-30 17:49:02 +0800
committer Jilou li <lijilou@xiaomi.corp-partner.google.com> 2024-12-30 17:53:13 -0800
commit03e17d9af14ee56c7cf119838ccda4c28b6b2e7e (patch)
tree1cf7596e4d169db2a402bc565a8b82062780a89c
parentb4838c7cea48eb17c67bb30c7713fa51842f6c35 (diff)
InstallPackageHelper: fiX the NPE problem.
Install the renamed apk,use the new name to getPackageLPr may be null,so we should make a null judgment. Test: monkey test Flag: EXEMPT bugfix Bug: 386727719 Change-Id: Ia41a401bceaa13889ea66f5e3e337b99e3e4b799
-rw-r--r--services/core/java/com/android/server/pm/InstallPackageHelper.java11
1 files changed, 6 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index f449126af0f9..d4efb5c2951e 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -1387,7 +1387,7 @@ final class InstallPackageHelper {
boolean systemApp = false;
boolean replace = false;
synchronized (mPm.mLock) {
- final PackageSetting ps = mPm.mSettings.getPackageLPr(pkgName);
+ PackageSetting ps = mPm.mSettings.getPackageLPr(pkgName);
// Check if installing already existing package
if ((installFlags & PackageManager.INSTALL_REPLACE_EXISTING) != 0) {
String oldName = mPm.mSettings.getRenamedPackageLPr(pkgName);
@@ -1398,14 +1398,15 @@ final class InstallPackageHelper {
// name. We must continue using the original name, so
// rename the new package here.
parsedPackage.setPackageName(oldName);
- pkgName = parsedPackage.getPackageName();
- replace = true;
+ pkgName = oldName;
+ ps = mPm.mSettings.getPackageLPr(oldName);
if (DEBUG_INSTALL) {
Slog.d(TAG, "Replacing existing renamed package: oldName="
+ oldName + " pkgName=" + pkgName);
}
- } else if (ps != null) {
- // This package, under its official name, already exists
+ }
+ if (ps != null) {
+ // This package, under its official name or its old name, already exists
// on the device; we should replace it.
replace = true;
if (DEBUG_INSTALL) Slog.d(TAG, "Replace existing package: " + pkgName);