Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c481b3c6 authored by Rhed Jao's avatar Rhed Jao Committed by Automerger Merge Worker
Browse files

Merge "Enforce package visibility filter on the SharedLibraryInfo" into sc-dev...

Merge "Enforce package visibility filter on the SharedLibraryInfo" into sc-dev am: dc61ccec am: 4d7db289

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14661878

Change-Id: Iffc40698507264eb81c787c8b51e957d2b344c2f
parents 65cc0664 4d7db289
Loading
Loading
Loading
Loading
+16 −8
Original line number Original line Diff line number Diff line
@@ -8472,7 +8472,7 @@ public class PackageManagerService extends IPackageManager.Stub
                            libInfo.getPackageName(), libInfo.getAllCodePaths(),
                            libInfo.getPackageName(), libInfo.getAllCodePaths(),
                            libInfo.getName(), libInfo.getLongVersion(),
                            libInfo.getName(), libInfo.getLongVersion(),
                            libInfo.getType(), libInfo.getDeclaringPackage(),
                            libInfo.getType(), libInfo.getDeclaringPackage(),
                            getPackagesUsingSharedLibraryLPr(libInfo, flags, userId),
                            getPackagesUsingSharedLibraryLPr(libInfo, flags, callingUid, userId),
                            (libInfo.getDependencies() == null
                            (libInfo.getDependencies() == null
                                    ? null
                                    ? null
                                    : new ArrayList<>(libInfo.getDependencies())),
                                    : new ArrayList<>(libInfo.getDependencies())),
@@ -8544,8 +8544,10 @@ public class PackageManagerService extends IPackageManager.Stub
                            libraryInfo.getPath(), libraryInfo.getPackageName(),
                            libraryInfo.getPath(), libraryInfo.getPackageName(),
                            libraryInfo.getAllCodePaths(), libraryInfo.getName(),
                            libraryInfo.getAllCodePaths(), libraryInfo.getName(),
                            libraryInfo.getLongVersion(), libraryInfo.getType(),
                            libraryInfo.getLongVersion(), libraryInfo.getType(),
                            libraryInfo.getDeclaringPackage(), getPackagesUsingSharedLibraryLPr(
                            libraryInfo.getDeclaringPackage(),
                            libraryInfo, flags, userId), libraryInfo.getDependencies() == null
                            getPackagesUsingSharedLibraryLPr(
                                    libraryInfo, flags, callingUid, userId),
                            libraryInfo.getDependencies() == null
                                    ? null : new ArrayList<>(libraryInfo.getDependencies()),
                                    ? null : new ArrayList<>(libraryInfo.getDependencies()),
                            libraryInfo.isNative());
                            libraryInfo.isNative());
@@ -8562,7 +8564,7 @@ public class PackageManagerService extends IPackageManager.Stub
    @GuardedBy("mLock")
    @GuardedBy("mLock")
    private List<VersionedPackage> getPackagesUsingSharedLibraryLPr(
    private List<VersionedPackage> getPackagesUsingSharedLibraryLPr(
            SharedLibraryInfo libInfo, int flags, int userId) {
            SharedLibraryInfo libInfo, int flags, int callingUid, int userId) {
        List<VersionedPackage> versionedPackages = null;
        List<VersionedPackage> versionedPackages = null;
        final int packageCount = mSettings.getPackagesLocked().size();
        final int packageCount = mSettings.getPackagesLocked().size();
        for (int i = 0; i < packageCount; i++) {
        for (int i = 0; i < packageCount; i++) {
@@ -8585,6 +8587,9 @@ public class PackageManagerService extends IPackageManager.Stub
                if (ps.usesStaticLibrariesVersions[libIdx] != libInfo.getLongVersion()) {
                if (ps.usesStaticLibrariesVersions[libIdx] != libInfo.getLongVersion()) {
                    continue;
                    continue;
                }
                }
                if (shouldFilterApplicationLocked(ps, callingUid, userId)) {
                    continue;
                }
                if (versionedPackages == null) {
                if (versionedPackages == null) {
                    versionedPackages = new ArrayList<>();
                    versionedPackages = new ArrayList<>();
                }
                }
@@ -8597,6 +8602,9 @@ public class PackageManagerService extends IPackageManager.Stub
            } else if (ps.pkg != null) {
            } else if (ps.pkg != null) {
                if (ArrayUtils.contains(ps.pkg.getUsesLibraries(), libName)
                if (ArrayUtils.contains(ps.pkg.getUsesLibraries(), libName)
                        || ArrayUtils.contains(ps.pkg.getUsesOptionalLibraries(), libName)) {
                        || ArrayUtils.contains(ps.pkg.getUsesOptionalLibraries(), libName)) {
                    if (shouldFilterApplicationLocked(ps, callingUid, userId)) {
                        continue;
                    }
                    if (versionedPackages == null) {
                    if (versionedPackages == null) {
                        versionedPackages = new ArrayList<>();
                        versionedPackages = new ArrayList<>();
                    }
                    }
@@ -14321,7 +14329,7 @@ public class PackageManagerService extends IPackageManager.Stub
        // Remove the shared library overlays from its dependent packages.
        // Remove the shared library overlays from its dependent packages.
        for (int currentUserId : UserManagerService.getInstance().getUserIds()) {
        for (int currentUserId : UserManagerService.getInstance().getUserIds()) {
            final List<VersionedPackage> dependents = getPackagesUsingSharedLibraryLPr(
            final List<VersionedPackage> dependents = getPackagesUsingSharedLibraryLPr(
                    libraryInfo, 0, currentUserId);
                    libraryInfo, 0, Process.SYSTEM_UID, currentUserId);
            if (dependents == null) {
            if (dependents == null) {
                continue;
                continue;
            }
            }
@@ -20684,7 +20692,7 @@ public class PackageManagerService extends IPackageManager.Stub
                            continue;
                            continue;
                        }
                        }
                        List<VersionedPackage> libClientPackages = getPackagesUsingSharedLibraryLPr(
                        List<VersionedPackage> libClientPackages = getPackagesUsingSharedLibraryLPr(
                                libraryInfo, MATCH_KNOWN_PACKAGES, currUserId);
                                libraryInfo, MATCH_KNOWN_PACKAGES, Process.SYSTEM_UID, currUserId);
                        if (!ArrayUtils.isEmpty(libClientPackages)) {
                        if (!ArrayUtils.isEmpty(libClientPackages)) {
                            Slog.w(TAG, "Not removing package " + pkg.getManifestPackageName()
                            Slog.w(TAG, "Not removing package " + pkg.getManifestPackageName()
                                    + " hosting lib " + libraryInfo.getName() + " version "
                                    + " hosting lib " + libraryInfo.getName() + " version "
@@ -26795,7 +26803,7 @@ public class PackageManagerService extends IPackageManager.Stub
                            continue;
                            continue;
                        }
                        }
                        final List<VersionedPackage> dependents = getPackagesUsingSharedLibraryLPr(
                        final List<VersionedPackage> dependents = getPackagesUsingSharedLibraryLPr(
                                info, 0, userId);
                                info, 0, Process.SYSTEM_UID, userId);
                        if (dependents == null) {
                        if (dependents == null) {
                            continue;
                            continue;
                        }
                        }