OSDN Git Service

Fix realCallingUid/Pid for startActivities()
authorMakoto Onuki <omakoto@google.com>
Thu, 21 Jul 2016 23:26:36 +0000 (16:26 -0700)
committerMakoto Onuki <omakoto@google.com>
Thu, 21 Jul 2016 23:35:01 +0000 (16:35 -0700)
They now match startActivityMayWait().

Bug 30277795

Change-Id: I883d74bf02cb79a19e2139134aa9be0296787fed

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

index 53289be..5252446 100644 (file)
@@ -895,13 +895,15 @@ class ActivityStarter {
             throw new IllegalArgumentException("intents are length different than resolvedTypes");
         }
 
+        final int realCallingPid = Binder.getCallingPid();
+        final int realCallingUid = Binder.getCallingUid();
 
         int callingPid;
         if (callingUid >= 0) {
             callingPid = -1;
         } else if (caller == null) {
-            callingPid = Binder.getCallingPid();
-            callingUid = Binder.getCallingUid();
+            callingPid = realCallingPid;
+            callingUid = realCallingUid;
         } else {
             callingPid = callingUid = -1;
         }
@@ -942,7 +944,8 @@ class ActivityStarter {
                             i == intents.length - 1 ? bOptions : null);
                     int res = startActivityLocked(caller, intent, null /*ephemeralIntent*/,
                             resolvedTypes[i], aInfo, null /*rInfo*/, null, null, resultTo, null, -1,
-                            callingPid, callingUid, callingPackage, callingPid, callingUid, 0,
+                            callingPid, callingUid, callingPackage,
+                            realCallingPid, realCallingUid, 0,
                             options, false, componentSpecified, outActivity, null, null);
                     if (res < 0) {
                         return res;