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

Commit 059c9d6d authored by Jackal Guo's avatar Jackal Guo
Browse files

Revert "Revert "Add the checking of the package installed state""

Unless the caller wants to query the UID or GID with certain flags
and proper permission, we should only return the result within the
current userId only.

This reverts commit 637ec21a.

Bug: 186180067
Test: atest -p core/java/android/content/pm \
        core/java/com/android/internal/content \
	services/core/java/com/android/server/pm \
	services/tests/servicestests/src/com/android/server/pm
Change-Id: Iba2e1481cb71fbddabef7b8bf0eb83a7b79ae7ad
parent 1a7e40fa
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -4404,12 +4404,12 @@ public class PackageManagerService extends IPackageManager.Stub
            // reader
            final AndroidPackage p = mPackages.get(packageName);
            if (p != null && AndroidPackageUtils.isMatchForSystemOnly(p, flags)) {
                PackageSetting ps = getPackageSettingInternal(p.getPackageName(), callingUid);
                if (shouldFilterApplicationLocked(ps, callingUid, userId)) {
                    return -1;
                }
                final PackageSetting ps = getPackageSettingInternal(p.getPackageName(), callingUid);
                if (ps != null && ps.getInstalled(userId)
                        && !shouldFilterApplicationLocked(ps, callingUid, userId)) {
                    return UserHandle.getUid(userId, p.getUid());
                }
            }
            if ((flags & MATCH_KNOWN_PACKAGES) != 0) {
                final PackageSetting ps = mSettings.getPackageLPr(packageName);
                if (ps != null && ps.isMatch(flags)
@@ -8765,14 +8765,12 @@ public class PackageManagerService extends IPackageManager.Stub
        synchronized (mLock) {
            final AndroidPackage p = mPackages.get(packageName);
            if (p != null && AndroidPackageUtils.isMatchForSystemOnly(p, flags)) {
                PackageSetting ps = getPackageSetting(p.getPackageName());
                if (shouldFilterApplicationLocked(ps, callingUid, userId)) {
                    return null;
                }
                // TODO: Shouldn't this be checking for package installed state for userId and
                // return null?
                final PackageSetting ps = getPackageSetting(p.getPackageName());
                if (ps != null && ps.getInstalled(userId)
                        && !shouldFilterApplicationLocked(ps, callingUid, userId)) {
                    return mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId));
                }
            }
            if ((flags & MATCH_KNOWN_PACKAGES) != 0) {
                final PackageSetting ps = mSettings.getPackageLPr(packageName);
                if (ps != null && ps.isMatch(flags)
@@ -12443,6 +12441,7 @@ public class PackageManagerService extends IPackageManager.Stub
            }
        }
        builder.append(" to access user ");
        builder.append(userId);
        builder.append(".");
        return builder.toString();
    }