From c1267a3b4cf4d71fdbc0ee933765a96aed5cfda9 Mon Sep 17 00:00:00 2001 From: Will Burr Date: Tue, 14 Mar 2023 16:31:57 +0000 Subject: Add all shared info libraries in first pass Breaks the loop over install requests into two, to ensure that the shared info libraries are added to the package version map before the shared library check takes place. Fixes: 273298881 Test: manual Change-Id: Ibb513d93d2288c966d17c4d2540cdc91f0dc7c1d --- .../core/java/com/android/server/pm/ReconcilePackageUtils.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/ReconcilePackageUtils.java b/services/core/java/com/android/server/pm/ReconcilePackageUtils.java index d160740712d3..5312ae6ca84c 100644 --- a/services/core/java/com/android/server/pm/ReconcilePackageUtils.java +++ b/services/core/java/com/android/server/pm/ReconcilePackageUtils.java @@ -69,7 +69,6 @@ final class ReconcilePackageUtils { for (InstallRequest installRequest : installRequests) { installRequest.onReconcileStarted(); - final String installPackageName = installRequest.getParsedPackage().getPackageName(); // add / replace existing with incoming packages combinedPackages.put(installRequest.getScannedPackageSetting().getPackageName(), @@ -84,12 +83,17 @@ final class ReconcilePackageUtils { incomingSharedLibraries, info)) { throw ReconcileFailure.ofInternalError( "Shared Library " + info.getName() - + " is being installed twice in this set!", + + " is being installed twice in this set!", PackageManagerException.INTERNAL_ERROR_SHARED_LIB_INSTALLED_TWICE); } } } + } + for (InstallRequest installRequest : installRequests) { + final String installPackageName = installRequest.getParsedPackage().getPackageName(); + final List allowedSharedLibInfos = + sharedLibraries.getAllowedSharedLibInfos(installRequest); final DeletePackageAction deletePackageAction; // we only want to try to delete for non system apps -- cgit v1.2.3-59-g8ed1b