Make WifiDppEnrolleeActivity launches explicit
Bug: 180518134
Test: make RunSettingsRoboTests \
ROBOTEST_FILTER=WifiDppUtilsTest\|WifiDialogActivityTest
Test: Manually verified b/180518134 attack is no longer possible
Change-Id: I8c4e1e17117582c78671d0e4658bd87715a9a046
(cherry picked from commit 59c0a7bc63
)
This commit is contained in:
@@ -1137,7 +1137,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
||||
@Override
|
||||
public void onScan(WifiDialog2 dialog, String ssid) {
|
||||
// Launch QR code scanner to join a network.
|
||||
startActivityForResult(WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid),
|
||||
startActivityForResult(
|
||||
WifiDppUtils.getEnrolleeQrCodeScannerIntent(dialog.getContext(), ssid),
|
||||
REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER);
|
||||
}
|
||||
|
||||
|
@@ -109,7 +109,8 @@ public class AddNetworkFragment extends InstrumentedFragment implements WifiConf
|
||||
final String ssid = ssidEditText.getText().toString();
|
||||
|
||||
// Launch QR code scanner to join a network.
|
||||
startActivityForResult(WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid),
|
||||
startActivityForResult(
|
||||
WifiDppUtils.getEnrolleeQrCodeScannerIntent(view.getContext(), ssid),
|
||||
REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER);
|
||||
}
|
||||
}
|
||||
|
@@ -59,7 +59,7 @@ public class AddWifiNetworkPreference extends Preference {
|
||||
getContext().getString(R.string.wifi_dpp_scan_qr_code));
|
||||
scanButton.setOnClickListener(view -> {
|
||||
getContext().startActivity(
|
||||
WifiDppUtils.getEnrolleeQrCodeScannerIntent(/* ssid */ null));
|
||||
WifiDppUtils.getEnrolleeQrCodeScannerIntent(getContext(), /* ssid */ null));
|
||||
});
|
||||
}
|
||||
|
||||
|
@@ -309,7 +309,7 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog
|
||||
|
||||
@Override
|
||||
public void onScan(WifiDialog2 dialog, String ssid) {
|
||||
Intent intent = WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid);
|
||||
Intent intent = WifiDppUtils.getEnrolleeQrCodeScannerIntent(dialog.getContext(), ssid);
|
||||
WizardManagerHelper.copyWizardManagerExtras(mIntent, intent);
|
||||
|
||||
// Launch QR code scanner to join a network.
|
||||
@@ -318,7 +318,7 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog
|
||||
|
||||
@Override
|
||||
public void onScan(WifiDialog dialog, String ssid) {
|
||||
Intent intent = WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid);
|
||||
Intent intent = WifiDppUtils.getEnrolleeQrCodeScannerIntent(dialog.getContext(), ssid);
|
||||
WizardManagerHelper.copyWizardManagerExtras(mIntent, intent);
|
||||
|
||||
// Launch QR code scanner to join a network.
|
||||
|
@@ -1035,7 +1035,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
@Override
|
||||
public void onScan(WifiDialog2 dialog, String ssid) {
|
||||
// Launch QR code scanner to join a network.
|
||||
startActivityForResult(WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid),
|
||||
startActivityForResult(
|
||||
WifiDppUtils.getEnrolleeQrCodeScannerIntent(dialog.getContext(), ssid),
|
||||
REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER);
|
||||
}
|
||||
|
||||
|
@@ -114,9 +114,9 @@ public class WifiDppUtils {
|
||||
* @param ssid The data corresponding to {@code WifiConfiguration} SSID
|
||||
* @return Intent for launching QR code scanner
|
||||
*/
|
||||
public static Intent getEnrolleeQrCodeScannerIntent(String ssid) {
|
||||
final Intent intent = new Intent(
|
||||
WifiDppEnrolleeActivity.ACTION_ENROLLEE_QR_CODE_SCANNER);
|
||||
public static Intent getEnrolleeQrCodeScannerIntent(Context context, String ssid) {
|
||||
final Intent intent = new Intent(context, WifiDppEnrolleeActivity.class);
|
||||
intent.setAction(WifiDppEnrolleeActivity.ACTION_ENROLLEE_QR_CODE_SCANNER);
|
||||
if (!TextUtils.isEmpty(ssid)) {
|
||||
intent.putExtra(EXTRA_WIFI_SSID, ssid);
|
||||
}
|
||||
|
@@ -27,6 +27,8 @@ import android.net.wifi.WifiConfiguration;
|
||||
import android.net.wifi.WifiConfiguration.KeyMgmt;
|
||||
import android.net.wifi.WifiManager;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.wifitrackerlib.WifiEntry;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -80,4 +82,12 @@ public class WifiDppUtilsTest {
|
||||
assertThat(intent.getBooleanExtra(WifiDppUtils.EXTRA_WIFI_HIDDEN_SSID, false))
|
||||
.isEqualTo(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getEnrolleeQrCodeScannerIntent_isExplicitIntent() {
|
||||
Intent intent = WifiDppUtils.getEnrolleeQrCodeScannerIntent(
|
||||
ApplicationProvider.getApplicationContext(), null);
|
||||
assertThat(intent.getComponent()).isNotNull();
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user