OSDN Git Service

Grant ephemeral app access during service bind
authorJesse Evans <jsje@google.com>
Wed, 3 May 2017 16:57:16 +0000 (09:57 -0700)
committerJesse Evans <jsje@google.com>
Wed, 3 May 2017 16:57:16 +0000 (09:57 -0700)
Currently we only grant ephemeral access during sendServiceArgs,
but since bindService does not actually send service arguments
the code path to grant ephemeral access is not currently hit.

This change grants ephemeral access during bindServiceLocked after
the association between the calling app and the target service has
been established.

Test: existing tests.
Bug: 37766185
Change-Id: I64847a2dcaf1255c0a7d663c4461cda62655a8d0

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

index e0fc531..4313533 100644 (file)
@@ -1258,6 +1258,10 @@ public final class ActiveServices {
 
             mAm.startAssociationLocked(callerApp.uid, callerApp.processName, callerApp.curProcState,
                     s.appInfo.uid, s.name, s.processName);
+            // Once the apps have become associated, if one of them is caller is ephemeral
+            // the target app should now be able to see the calling app
+            mAm.grantEphemeralAccessLocked(callerApp.userId, service,
+                    s.appInfo.uid, UserHandle.getAppId(callerApp.uid));
 
             AppBindRecord b = s.retrieveAppBindingLocked(service, callerApp);
             ConnectionRecord c = new ConnectionRecord(b, activity,