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

Commit 6c36583a authored by Todd Kennedy's avatar Todd Kennedy
Browse files

Add check for cross user permission

Fixes: 153995991
Fixes: 153996872
Fixes: 153996866
Test: Manual. Device boots
Change-Id: I0e32631b21725265e6dd638ea526879a351abb00
parent a2b1a3fd
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -4420,6 +4420,11 @@ public class PackageManagerService extends IPackageManager.Stub
        if (getInstantAppPackageName(callingUid) != null) {
            throw new SecurityException("Instant applications don't have access to this method");
        }
        if (!mUserManager.exists(userId)) {
            throw new SecurityException("User doesn't exist");
        }
        mPermissionManager.enforceCrossUserPermission(
                callingUid, userId, false, false, "checkPackageStartable");
        final boolean userKeyUnlocked = StorageManager.isUserKeyUnlocked(userId);
        synchronized (mLock) {
            final PackageSetting ps = mSettings.mPackages.get(packageName);
@@ -5777,9 +5782,15 @@ public class PackageManagerService extends IPackageManager.Stub
    @Override
    public ChangedPackages getChangedPackages(int sequenceNumber, int userId) {
        if (getInstantAppPackageName(Binder.getCallingUid()) != null) {
        final int callingUid = Binder.getCallingUid();
        if (getInstantAppPackageName(callingUid) != null) {
            return null;
        }
        if (!mUserManager.exists(userId)) {
            return null;
        }
        mPermissionManager.enforceCrossUserPermission(
                callingUid, userId, false, false, "getChangedPackages");
        synchronized (mLock) {
            if (sequenceNumber >= mChangedPackagesSequenceNumber) {
                return null;
@@ -8772,8 +8783,10 @@ public class PackageManagerService extends IPackageManager.Stub
    private ProviderInfo resolveContentProviderInternal(String name, int flags, int userId) {
        if (!mUserManager.exists(userId)) return null;
        flags = updateFlagsForComponent(flags, userId);
        final int callingUid = Binder.getCallingUid();
        mPermissionManager.enforceCrossUserPermission(
                callingUid, userId, false, false, "resolveContentProvider");
        flags = updateFlagsForComponent(flags, userId);
        final ProviderInfo providerInfo = mComponentResolver.queryProvider(name, flags, userId);
        if (providerInfo == null) {
            return null;