From 2e0cba87dd0c018f374b121326812f740ca78212 Mon Sep 17 00:00:00 2001 From: Robert Horvath Date: Thu, 10 Feb 2022 15:36:31 +0100 Subject: [PATCH] Explicitly mark receivers as RECEIVER_NOT_EXPORTED The intent actions registered for here are only marked as protected broadcasts if the telephony package is present. In its absence, receivers *must* specify either RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED. Since these Intents are sent from Telephony, which runs with a system UID less than the first application UID (10000), the system_server can receive these broadcasts without exporting the receivers. Bug: 218831939 Test: build & run on ATV device Test: atest TelephonySubscriptionTrackerTest Change-Id: I3fed2a1772fccea611f68e9425755b0c9aa9051e --- .../core/java/com/android/server/am/DataConnectionStats.java | 3 ++- .../com/android/server/vcn/TelephonySubscriptionTracker.java | 2 +- .../android/server/vcn/TelephonySubscriptionTrackerTest.java | 5 +++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/am/DataConnectionStats.java b/services/core/java/com/android/server/am/DataConnectionStats.java index 6e39a4c802d9..651e98c602d9 100644 --- a/services/core/java/com/android/server/am/DataConnectionStats.java +++ b/services/core/java/com/android/server/am/DataConnectionStats.java @@ -73,7 +73,8 @@ public class DataConnectionStats extends BroadcastReceiver { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_SIM_STATE_CHANGED); - mContext.registerReceiver(this, filter, null /* broadcastPermission */, mListenerHandler); + mContext.registerReceiver(this, filter, null /* broadcastPermission */, mListenerHandler, + Context.RECEIVER_NOT_EXPORTED); } @Override diff --git a/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java b/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java index a17e79273e41..30e261725a73 100644 --- a/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java +++ b/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java @@ -146,7 +146,7 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver { filter.addAction(ACTION_CARRIER_CONFIG_CHANGED); filter.addAction(ACTION_MULTI_SIM_CONFIG_CHANGED); - mContext.registerReceiver(this, filter, null, mHandler); + mContext.registerReceiver(this, filter, null, mHandler, Context.RECEIVER_NOT_EXPORTED); mSubscriptionManager.addOnSubscriptionsChangedListener( executor, mSubscriptionChangedListener); mTelephonyManager.registerTelephonyCallback(executor, mActiveDataSubIdListener); diff --git a/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java b/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java index 978bf3ed2e92..7b1f7a599519 100644 --- a/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java +++ b/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java @@ -174,7 +174,7 @@ public class TelephonySubscriptionTrackerTest { private IntentFilter getIntentFilter() { final ArgumentCaptor captor = ArgumentCaptor.forClass(IntentFilter.class); - verify(mContext).registerReceiver(any(), captor.capture(), any(), any()); + verify(mContext).registerReceiver(any(), captor.capture(), any(), any(), anyInt()); return captor.getValue(); } @@ -258,7 +258,8 @@ public class TelephonySubscriptionTrackerTest { eq(mTelephonySubscriptionTracker), any(IntentFilter.class), any(), - eq(mHandler)); + eq(mHandler), + eq(Context.RECEIVER_NOT_EXPORTED)); final IntentFilter filter = getIntentFilter(); assertEquals(2, filter.countActions()); assertTrue(filter.hasAction(ACTION_CARRIER_CONFIG_CHANGED));