am c9a0c0b9: Lockdown AM.getRunningAppProcesses API with permission.REAL_GET_TASKS

* commit 'c9a0c0b90773fded6c251646300231f67c891b78':
  Lockdown AM.getRunningAppProcesses API with permission.REAL_GET_TASKS
This commit is contained in:
Wale Ogunwale
2015-05-27 04:50:11 +00:00
committed by Android Git Automerger

View File

@@ -8250,7 +8250,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;
}
@@ -12256,16 +12256,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--) {
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)) {
@@ -12289,7 +12296,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);
}