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

Commit a4bbe303 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Hui Yu
Browse files

[DO NOT MERGE] [conflict] Merge "Make sure callingPackage belongs to...

[DO NOT MERGE] [conflict] Merge "Make sure callingPackage belongs to callingUid when checking BG-FGS restrictions." into rvc-dev am: a70add46

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



Change-Id: Ie110b8cfd17e441789f225ca8743d60a65365a92
Merged-In: Ic14fc331a9b5fbdbcfe6e54a31c8b765513bfd89
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 7aaba89b a70add46
Loading
Loading
Loading
Loading
+27 −4
Original line number Diff line number Diff line
@@ -5005,11 +5005,17 @@ public final class ActiveServices {
            return true;
        }

        if (verifyPackage(callingPackage, callingUid)) {
            final boolean isWhiteListedPackage =
                    mWhiteListAllowWhileInUsePermissionInFgs.contains(callingPackage);
            if (isWhiteListedPackage) {
                return true;
            }
        } else {
            EventLog.writeEvent(0x534e4554, "215003903", callingUid,
                    "callingPackage:" + callingPackage + " does not belong to callingUid:"
                    + callingUid);
        }

        // Is the calling UID a device owner app?
        final boolean isDeviceOwner = mAm.mInternal.isDeviceOwner(callingUid);
@@ -5047,4 +5053,21 @@ public final class ActiveServices {
        r.mAllowWhileInUsePermissionInFgs = false;
        r.mLastSetFgsRestrictionTime = 0;
    }

    /**
     * Checks if a given packageName belongs to a given uid.
     * @param packageName the package of the caller
     * @param uid the uid of the caller
     * @return true or false
     */
    private boolean verifyPackage(String packageName, int uid) {
        if (uid == ROOT_UID || uid == SYSTEM_UID) {
            //System and Root are always allowed
            return true;
        }
        final int userId = UserHandle.getUserId(uid);
        final int packageUid = mAm.getPackageManagerInternalLocked()
                .getPackageUid(packageName, PackageManager.MATCH_DEBUG_TRIAGED_MISSING, userId);
        return UserHandle.isSameApp(uid, packageUid);
    }
}