am 02f3cf79: am 523a19bf: am c9a0c0b9: Lockdown AM.getRunningAppProcesses API with permission.REAL_GET_TASKS
* commit '02f3cf79989b202a45753ad74653d48f7d73c73d': Lockdown AM.getRunningAppProcesses API with permission.REAL_GET_TASKS
This commit is contained in:
@@ -8126,7 +8126,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
}
|
}
|
||||||
if (!allowed) {
|
if (!allowed) {
|
||||||
Slog.w(TAG, caller + ": caller " + callingUid
|
Slog.w(TAG, caller + ": caller " + callingUid
|
||||||
+ " does not hold GET_TASKS; limiting output");
|
+ " does not hold REAL_GET_TASKS; limiting output");
|
||||||
}
|
}
|
||||||
return allowed;
|
return allowed;
|
||||||
}
|
}
|
||||||
@@ -12250,16 +12250,23 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
|
|
||||||
public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() {
|
public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() {
|
||||||
enforceNotIsolatedCaller("getRunningAppProcesses");
|
enforceNotIsolatedCaller("getRunningAppProcesses");
|
||||||
|
|
||||||
|
final int callingUid = Binder.getCallingUid();
|
||||||
|
|
||||||
// Lazy instantiation of list
|
// Lazy instantiation of list
|
||||||
List<ActivityManager.RunningAppProcessInfo> runList = null;
|
List<ActivityManager.RunningAppProcessInfo> runList = null;
|
||||||
final boolean allUsers = ActivityManager.checkUidPermission(INTERACT_ACROSS_USERS_FULL,
|
final boolean allUsers = ActivityManager.checkUidPermission(INTERACT_ACROSS_USERS_FULL,
|
||||||
Binder.getCallingUid()) == PackageManager.PERMISSION_GRANTED;
|
callingUid) == PackageManager.PERMISSION_GRANTED;
|
||||||
int userId = UserHandle.getUserId(Binder.getCallingUid());
|
final int userId = UserHandle.getUserId(callingUid);
|
||||||
|
final boolean allUids = isGetTasksAllowed(
|
||||||
|
"getRunningAppProcesses", Binder.getCallingPid(), callingUid);
|
||||||
|
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
// Iterate across all processes
|
// 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);
|
ProcessRecord app = mLruProcesses.get(i);
|
||||||
if (!allUsers && app.userId != userId) {
|
if ((!allUsers && app.userId != userId)
|
||||||
|
|| (!allUids && app.uid != callingUid)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((app.thread != null) && (!app.crashing && !app.notResponding)) {
|
if ((app.thread != null) && (!app.crashing && !app.notResponding)) {
|
||||||
@@ -12283,7 +12290,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
//Slog.v(TAG, "Proc " + app.processName + ": imp=" + currApp.importance
|
//Slog.v(TAG, "Proc " + app.processName + ": imp=" + currApp.importance
|
||||||
// + " lru=" + currApp.lru);
|
// + " lru=" + currApp.lru);
|
||||||
if (runList == null) {
|
if (runList == null) {
|
||||||
runList = new ArrayList<ActivityManager.RunningAppProcessInfo>();
|
runList = new ArrayList<>();
|
||||||
}
|
}
|
||||||
runList.add(currApp);
|
runList.add(currApp);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user