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: Ie97372efebd8258d9a4c503771d55109a85e6ae9
This commit is contained in:
@@ -118,7 +118,8 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
|
||||
public void resume(Context context) {
|
||||
mContext = context;
|
||||
// Wi-Fi state is sticky, so just let the receiver update UI
|
||||
mContext.registerReceiver(mReceiver, mIntentFilter);
|
||||
mContext.registerReceiver(mReceiver, mIntentFilter,
|
||||
Context.RECEIVER_EXPORTED_UNAUDITED);
|
||||
if (!mListeningToOnSwitchChange) {
|
||||
mSwitchWidget.startListening();
|
||||
mListeningToOnSwitchChange = true;
|
||||
|
@@ -125,7 +125,8 @@ public class WifiStatusTest extends Activity {
|
||||
mWifiStateFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
|
||||
mWifiStateFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
|
||||
|
||||
registerReceiver(mWifiStateReceiver, mWifiStateFilter);
|
||||
registerReceiver(mWifiStateReceiver, mWifiStateFilter,
|
||||
Context.RECEIVER_EXPORTED_UNAUDITED);
|
||||
|
||||
setContentView(R.layout.wifi_status_test);
|
||||
|
||||
@@ -157,7 +158,8 @@ public class WifiStatusTest extends Activity {
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
registerReceiver(mWifiStateReceiver, mWifiStateFilter);
|
||||
registerReceiver(mWifiStateReceiver, mWifiStateFilter,
|
||||
Context.RECEIVER_EXPORTED_UNAUDITED);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -76,7 +76,8 @@ public final class WifiSummaryUpdater extends SummaryUpdater {
|
||||
if (register) {
|
||||
mWifiTracker.fetchInitialState();
|
||||
notifyChangeIfNeeded();
|
||||
mContext.registerReceiver(mReceiver, INTENT_FILTER);
|
||||
mContext.registerReceiver(mReceiver, INTENT_FILTER,
|
||||
Context.RECEIVER_EXPORTED_UNAUDITED);
|
||||
} else {
|
||||
mContext.unregisterReceiver(mReceiver);
|
||||
}
|
||||
|
@@ -429,7 +429,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
||||
mValidListener = true;
|
||||
}
|
||||
|
||||
context.registerReceiver(mIntentReceiver, mIntentFilter);
|
||||
context.registerReceiver(mIntentReceiver, mIntentFilter,
|
||||
Context.RECEIVER_EXPORTED_UNAUDITED);
|
||||
|
||||
final Intent intent = getActivity().getIntent();
|
||||
if (intent.getBooleanExtra(Phone.EXTRA_KEY_ALERT_SHOW, false)) {
|
||||
|
@@ -147,7 +147,8 @@ public class WifiTetherSettings extends RestrictedDashboardFragment
|
||||
}
|
||||
final Context context = getContext();
|
||||
if (context != null) {
|
||||
context.registerReceiver(mTetherChangeReceiver, TETHER_STATE_CHANGE_FILTER);
|
||||
context.registerReceiver(mTetherChangeReceiver, TETHER_STATE_CHANGE_FILTER,
|
||||
Context.RECEIVER_EXPORTED_UNAUDITED);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -83,7 +83,8 @@ public class WifiTetherSwitchBarController implements
|
||||
public void onStart() {
|
||||
mDataSaverBackend.addListener(this);
|
||||
mSwitch.setOnClickListener(this);
|
||||
mContext.registerReceiver(mReceiver, WIFI_INTENT_FILTER);
|
||||
mContext.registerReceiver(mReceiver, WIFI_INTENT_FILTER,
|
||||
Context.RECEIVER_EXPORTED_UNAUDITED);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user