From cf70a17a7100e06d873d15edcfa4497685476327 Mon Sep 17 00:00:00 2001 From: Narayan Kamath Date: Tue, 7 Jun 2016 09:31:55 +0100 Subject: [PATCH] PackageManagerService: fix NPE while renaming foreign dex markers. The User passed in to scan*LI is null during the initial boot scan and maybeRenameForeignDexMarkers wasn't expecting it. We attempt to rename markers for all users if that happens. bug: 29167406 Change-Id: I892dcc542e75d62d72c062b8ce5506ef85df5fc2 --- .../java/com/android/server/pm/PackageManagerService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index b9d7991c1112c..87141b4cfced0 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -8613,7 +8613,11 @@ public class PackageManagerService extends IPackageManager.Stub { // We don't expect installation to fail beyond this point if (pkgSetting.pkg != null) { - maybeRenameForeignDexMarkers(pkgSetting.pkg, pkg, user); + // Note that |user| might be null during the initial boot scan. If a codePath + // for an app has changed during a boot scan, it's due to an app update that's + // part of the system partition and marker changes must be applied to all users. + maybeRenameForeignDexMarkers(pkgSetting.pkg, pkg, + (user != null) ? user : UserHandle.ALL); } // Add the new setting to mSettings