diff options
| author | 2021-12-30 09:33:10 -0800 | |
|---|---|---|
| committer | 2021-12-30 09:33:10 -0800 | |
| commit | 985df6e27eec7e80c117e241ed341a7cf985d20f (patch) | |
| tree | b3c0e7b8392ebefab7b0d5fa2d17ce4ac55b6ed5 | |
| parent | 7866342c6a10115f4c69459f58b2f0dbd4a2be19 (diff) | |
Add unaudited exported flag to exposed runtime receivers
Android T allows apps to declare a runtime receiver as not exported
by invoking registerReceiver with a new RECEIVER_NOT_EXPORTED flag;
receivers registered with this flag will only receive broadcasts from
the platform and the app itself. However to ensure developers can
properly protect their receivers, all apps targeting T or later
registering a receiver for non-system broadcasts must specify either
the exported or not exported flag when invoking #registerReceiver;
if one of these flags is not provided, the platform will throw a
SecurityException. This commit updates all the exposed receivers
with a new RECEIVER_EXPORTED_UNAUDITED flag to maintain the existing
behavior of exporting the receiver while also flagging the receiver
for audit before the T release.
Bug: 161145287
Test: Build
Change-Id: Ib527f09867f6cdba151ae23b58bcc38394876459
| -rw-r--r-- | services/core/java/com/android/server/communal/CommunalManagerService.java | 3 | ||||
| -rw-r--r-- | services/tests/mockingservicestests/src/com/android/server/communal/CommunalManagerServiceTest.java | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/communal/CommunalManagerService.java b/services/core/java/com/android/server/communal/CommunalManagerService.java index df95bf597dc0..12203919a5e7 100644 --- a/services/core/java/com/android/server/communal/CommunalManagerService.java +++ b/services/core/java/com/android/server/communal/CommunalManagerService.java @@ -341,7 +341,8 @@ public final class CommunalManagerService extends SystemService { UserHandle.SYSTEM, mIntentFilter, /* broadcastPermission= */null, - /* scheduler= */ null); + /* scheduler= */ null, + Context.RECEIVER_EXPORTED_UNAUDITED); } private void unregister() { diff --git a/services/tests/mockingservicestests/src/com/android/server/communal/CommunalManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/communal/CommunalManagerServiceTest.java index d6db1b2f2766..7ebf014549b9 100644 --- a/services/tests/mockingservicestests/src/com/android/server/communal/CommunalManagerServiceTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/communal/CommunalManagerServiceTest.java @@ -29,6 +29,7 @@ import static com.android.server.wm.ActivityInterceptorCallback.COMMUNAL_MODE_OR import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.spy; @@ -138,7 +139,7 @@ public class CommunalManagerServiceTest { ArgumentCaptor<BroadcastReceiver> packageReceiverCaptor = ArgumentCaptor.forClass(BroadcastReceiver.class); verify(mContextSpy).registerReceiverAsUser(packageReceiverCaptor.capture(), - eq(UserHandle.SYSTEM), any(), any(), any()); + eq(UserHandle.SYSTEM), any(), any(), any(), anyInt()); mPackageReceiver = packageReceiverCaptor.getValue(); mBinder = mService.getBinderServiceInstance(); |