summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Michael Groover <mpgroover@google.com> 2021-12-30 09:33:10 -0800
committer Michael Groover <mpgroover@google.com> 2021-12-30 09:33:10 -0800
commit985df6e27eec7e80c117e241ed341a7cf985d20f (patch)
treeb3c0e7b8392ebefab7b0d5fa2d17ce4ac55b6ed5
parent7866342c6a10115f4c69459f58b2f0dbd4a2be19 (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.java3
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/communal/CommunalManagerServiceTest.java3
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();