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

Commit 21531bce authored by Wale Ogunwale's avatar Wale Ogunwale Committed by Android Git Automerger
Browse files

am 57141700: am 0f771240: am bf0439a7: am 02f3cf79: am 523a19bf: am c9a0c0b9:...

am 57141700: am 0f771240: am bf0439a7: am 02f3cf79: am 523a19bf: am c9a0c0b9: Lockdown AM.getRunningAppProcesses API with permission.REAL_GET_TASKS

* commit '57141700':
  Lockdown AM.getRunningAppProcesses API with permission.REAL_GET_TASKS
parents 54856cc7 57141700
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -8201,7 +8201,7 @@ public final class ActivityManagerService extends ActivityManagerNative
        }
        if (!allowed) {
            Slog.w(TAG, caller + ": caller " + callingUid
                    + " does not hold GET_TASKS; limiting output");
                    + " does not hold REAL_GET_TASKS; limiting output");
        }
        return allowed;
    }
@@ -12335,16 +12335,23 @@ public final class ActivityManagerService extends ActivityManagerNative
    public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() {
        enforceNotIsolatedCaller("getRunningAppProcesses");
        final int callingUid = Binder.getCallingUid();
        // Lazy instantiation of list
        List<ActivityManager.RunningAppProcessInfo> runList = null;
        final boolean allUsers = ActivityManager.checkUidPermission(INTERACT_ACROSS_USERS_FULL,
                Binder.getCallingUid()) == PackageManager.PERMISSION_GRANTED;
        int userId = UserHandle.getUserId(Binder.getCallingUid());
                callingUid) == PackageManager.PERMISSION_GRANTED;
        final int userId = UserHandle.getUserId(callingUid);
        final boolean allUids = isGetTasksAllowed(
                "getRunningAppProcesses", Binder.getCallingPid(), callingUid);
        synchronized (this) {
            // Iterate across all processes
            for (int i = mLruProcesses.size() - 1; i >= 0; i--) {
                ProcessRecord app = mLruProcesses.get(i);
                if (!allUsers && app.userId != userId) {
                if ((!allUsers && app.userId != userId)
                        || (!allUids && app.uid != callingUid)) {
                    continue;
                }
                if ((app.thread != null) && (!app.crashing && !app.notResponding)) {
@@ -12368,7 +12375,7 @@ public final class ActivityManagerService extends ActivityManagerNative
                    //Slog.v(TAG, "Proc " + app.processName + ": imp=" + currApp.importance
                    //        + " lru=" + currApp.lru);
                    if (runList == null) {
                        runList = new ArrayList<ActivityManager.RunningAppProcessInfo>();
                        runList = new ArrayList<>();
                    }
                    runList.add(currApp);
                }