OSDN Git Service

Prevent system uid component from running in an app process
authorWale Ogunwale <ogunwale@google.com>
Thu, 11 Jun 2015 19:44:47 +0000 (12:44 -0700)
committerThe Android Automerger <android-build@google.com>
Thu, 9 Jul 2015 21:04:59 +0000 (14:04 -0700)
Bug: 21669445
Change-Id: I11d0bc5301d7e2a64972221f54f3cbd611f8e404
(cherry picked from commit 44368567f840e3469b5fd2c9399ed444b6f46ebf)

services/core/java/com/android/server/am/ActivityManagerService.java

index 4d37ab8..2020bca 100755 (executable)
@@ -2691,9 +2691,14 @@ public final class ActivityManagerService extends ActivityManagerNative
             // should never happen).
             SparseArray<ProcessRecord> procs = mProcessNames.getMap().get(processName);
             if (procs == null) return null;
-            final int N = procs.size();
-            for (int i = 0; i < N; i++) {
-                if (UserHandle.isSameUser(procs.keyAt(i), uid)) return procs.valueAt(i);
+            final int procCount = procs.size();
+            for (int i = 0; i < procCount; i++) {
+                final int procUid = procs.keyAt(i);
+                if (UserHandle.isApp(procUid) || !UserHandle.isSameUser(procUid, uid)) {
+                    // Don't use an app process or different user process for system component.
+                    continue;
+                }
+                return procs.valueAt(i);
             }
         }
         ProcessRecord proc = mProcessNames.get(processName, uid);