Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 985df6e2 authored by Michael Groover's avatar Michael Groover
Browse files

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
parent 7866342c
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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() {
+2 −1
Original line number Diff line number Diff line
@@ -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();