diff options
author | Patrick Baumann <patb@google.com> | 2019-12-02 13:52:28 -0800 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-12-02 13:52:28 -0800 |
commit | 5b7c9a19d1ee9e8fe31874f6e336dc9249069375 (patch) | |
tree | c2d050772c7cf407292a9d56d75226efd2606110 | |
parent | 80a5a3db13c8b9832ee4986fdd8aa1dba407013e (diff) | |
parent | b17f9ee38c0961cea13360fd0c5c8d224e078a2c (diff) | |
download | base-5b7c9a19d1ee9e8fe31874f6e336dc9249069375.tar.gz |
Merge "Handles null outInfo in deleteSystemPackageLI"
am: b17f9ee38c
Change-Id: I73a81cd9fb433fb0624e58ae60231372ecb1fb50
-rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 87be5ae55561..2db6e4a207b2 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -18657,10 +18657,11 @@ public class PackageManagerService extends IPackageManager.Stub * Tries to delete system package. */ private void deleteSystemPackageLIF(DeletePackageAction action, PackageSetting deletedPs, - int[] allUserHandles, int flags, PackageRemovedInfo outInfo, boolean writeSettings) + int[] allUserHandles, int flags, @Nullable PackageRemovedInfo outInfo, + boolean writeSettings) throws SystemDeleteException { - final boolean applyUserRestrictions - = (allUserHandles != null) && (outInfo.origUsers != null); + final boolean applyUserRestrictions = + (allUserHandles != null) && outInfo != null && (outInfo.origUsers != null); final PackageParser.Package deletedPkg = deletedPs.pkg; // Confirm if the system package has been updated // An updated system app can be deleted. This will also have to restore @@ -18681,19 +18682,21 @@ public class PackageManagerService extends IPackageManager.Stub } } - // Delete the updated package - outInfo.isRemovedPackageSystemUpdate = true; - if (outInfo.removedChildPackages != null) { - final int childCount = (deletedPs.childPackageNames != null) - ? deletedPs.childPackageNames.size() : 0; - for (int i = 0; i < childCount; i++) { - String childPackageName = deletedPs.childPackageNames.get(i); - if (disabledPs.childPackageNames != null && disabledPs.childPackageNames - .contains(childPackageName)) { - PackageRemovedInfo childInfo = outInfo.removedChildPackages.get( - childPackageName); - if (childInfo != null) { - childInfo.isRemovedPackageSystemUpdate = true; + if (outInfo != null) { + // Delete the updated package + outInfo.isRemovedPackageSystemUpdate = true; + if (outInfo.removedChildPackages != null) { + final int childCount = (deletedPs.childPackageNames != null) + ? deletedPs.childPackageNames.size() : 0; + for (int i = 0; i < childCount; i++) { + String childPackageName = deletedPs.childPackageNames.get(i); + if (disabledPs.childPackageNames != null && disabledPs.childPackageNames + .contains(childPackageName)) { + PackageRemovedInfo childInfo = outInfo.removedChildPackages.get( + childPackageName); + if (childInfo != null) { + childInfo.isRemovedPackageSystemUpdate = true; + } } } } @@ -18726,7 +18729,8 @@ public class PackageManagerService extends IPackageManager.Stub if (DEBUG_REMOVE) Slog.d(TAG, "Re-installing system package: " + disabledPs); try { installPackageFromSystemLIF(disabledPs.codePathString, allUserHandles, - outInfo.origUsers, deletedPs.getPermissionsState(), writeSettings); + outInfo == null ? null : outInfo.origUsers, deletedPs.getPermissionsState(), + writeSettings); } catch (PackageManagerException e) { Slog.w(TAG, "Failed to restore system package:" + deletedPkg.packageName + ": " + e.getMessage()); |