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

Commit 6ff421d8 authored by Chinmay Dhodapkar's avatar Chinmay Dhodapkar
Browse files

Add MODIFY_PHONE_STATE when registering receiver

Without this additional check we can end up handling
ACTION_TTY_PREFERRED_MODE_CHANGE from an unpriviledged app
Currently this intent is sent by dialer on 1P devices, so
it cannot be converted to a protected-broadcast

Bug: 236264289
Tests: atest DeviceCapabilityListenerTest
Change-Id: I221b28dd3e1f7ed51f915dc79a62f8818f8a65a2
parent d342f0b2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -274,7 +274,8 @@ public class DeviceCapabilityListener {
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
        filter.addAction(TelecomManager.ACTION_TTY_PREFERRED_MODE_CHANGED);
        mContext.registerReceiver(mReceiver, filter);
        mContext.registerReceiver(mReceiver, filter, android.Manifest.permission.MODIFY_PHONE_STATE,
                null);

        ContentResolver resolver = mContext.getContentResolver();
        if (resolver != null) {
+7 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.os.Handler;
import android.os.PersistableBundle;
import android.telecom.TelecomManager;
import android.telephony.CarrierConfigManager;
@@ -130,6 +131,12 @@ public class ContextFixture {
            return null;
        }

        @Override
        public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
            String broadcastPermission, Handler scheduler) {
            return null;
        }

        @Override
        public void unregisterReceiver(BroadcastReceiver receiver) {
        }
+2 −1
Original line number Diff line number Diff line
@@ -107,7 +107,8 @@ public class DeviceCapabilityListenerTest extends ImsTestBase {

        deviceCapListener.initialize();

        verify(mContext).registerReceiver(any(), any());
        verify(mContext).registerReceiver(any(), any(),
            eq(android.Manifest.permission.MODIFY_PHONE_STATE), any());
        verify(mProvisioningManager).registerProvisioningChangedCallback(any(), any());
    }