diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index ae58efa0d3309..14861c2ddf4c4 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -8472,7 +8472,7 @@ public class PackageManagerService extends IPackageManager.Stub libInfo.getPackageName(), libInfo.getAllCodePaths(), libInfo.getName(), libInfo.getLongVersion(), libInfo.getType(), libInfo.getDeclaringPackage(), - getPackagesUsingSharedLibraryLPr(libInfo, flags, userId), + getPackagesUsingSharedLibraryLPr(libInfo, flags, callingUid, userId), (libInfo.getDependencies() == null ? null : new ArrayList<>(libInfo.getDependencies())), @@ -8544,9 +8544,11 @@ public class PackageManagerService extends IPackageManager.Stub libraryInfo.getPath(), libraryInfo.getPackageName(), libraryInfo.getAllCodePaths(), libraryInfo.getName(), libraryInfo.getLongVersion(), libraryInfo.getType(), - libraryInfo.getDeclaringPackage(), getPackagesUsingSharedLibraryLPr( - libraryInfo, flags, userId), libraryInfo.getDependencies() == null - ? null : new ArrayList<>(libraryInfo.getDependencies()), + libraryInfo.getDeclaringPackage(), + getPackagesUsingSharedLibraryLPr( + libraryInfo, flags, callingUid, userId), + libraryInfo.getDependencies() == null + ? null : new ArrayList<>(libraryInfo.getDependencies()), libraryInfo.isNative()); if (result == null) { @@ -8562,7 +8564,7 @@ public class PackageManagerService extends IPackageManager.Stub @GuardedBy("mLock") private List getPackagesUsingSharedLibraryLPr( - SharedLibraryInfo libInfo, int flags, int userId) { + SharedLibraryInfo libInfo, int flags, int callingUid, int userId) { List versionedPackages = null; final int packageCount = mSettings.getPackagesLocked().size(); for (int i = 0; i < packageCount; i++) { @@ -8585,6 +8587,9 @@ public class PackageManagerService extends IPackageManager.Stub if (ps.usesStaticLibrariesVersions[libIdx] != libInfo.getLongVersion()) { continue; } + if (shouldFilterApplicationLocked(ps, callingUid, userId)) { + continue; + } if (versionedPackages == null) { versionedPackages = new ArrayList<>(); } @@ -8597,6 +8602,9 @@ public class PackageManagerService extends IPackageManager.Stub } else if (ps.pkg != null) { if (ArrayUtils.contains(ps.pkg.getUsesLibraries(), libName) || ArrayUtils.contains(ps.pkg.getUsesOptionalLibraries(), libName)) { + if (shouldFilterApplicationLocked(ps, callingUid, userId)) { + continue; + } if (versionedPackages == null) { versionedPackages = new ArrayList<>(); } @@ -14321,7 +14329,7 @@ public class PackageManagerService extends IPackageManager.Stub // Remove the shared library overlays from its dependent packages. for (int currentUserId : UserManagerService.getInstance().getUserIds()) { final List dependents = getPackagesUsingSharedLibraryLPr( - libraryInfo, 0, currentUserId); + libraryInfo, 0, Process.SYSTEM_UID, currentUserId); if (dependents == null) { continue; } @@ -20684,7 +20692,7 @@ public class PackageManagerService extends IPackageManager.Stub continue; } List libClientPackages = getPackagesUsingSharedLibraryLPr( - libraryInfo, MATCH_KNOWN_PACKAGES, currUserId); + libraryInfo, MATCH_KNOWN_PACKAGES, Process.SYSTEM_UID, currUserId); if (!ArrayUtils.isEmpty(libClientPackages)) { Slog.w(TAG, "Not removing package " + pkg.getManifestPackageName() + " hosting lib " + libraryInfo.getName() + " version " @@ -26795,7 +26803,7 @@ public class PackageManagerService extends IPackageManager.Stub continue; } final List dependents = getPackagesUsingSharedLibraryLPr( - info, 0, userId); + info, 0, Process.SYSTEM_UID, userId); if (dependents == null) { continue; }