diff options
author | xshu <xshu@google.com> | 2019-07-10 18:03:32 -0700 |
---|---|---|
committer | xshu <xshu@google.com> | 2019-07-10 18:03:32 -0700 |
commit | 608b03f29d70b6d9055f349dcf194fae0248c9bb (patch) | |
tree | 4ac64c71bb4292aa6a7bd8bb64c6571f793a67da | |
parent | c23fd06553163353e75ed9b45d2556b5969ed6f0 (diff) |
Mask out macRandomizationSetting when feature is unsupported
All wifi networks will use factory MAC to connect when the
config_wifi_connected_mac_randomization_supported feature flag is set to
false.
Making macRandomizationSetting always return "false" in the above case.
Bug: 137230966
Test: unit tests
Test: manual test on a unsupported device - verifying network details
page is always showing the factory MAC address.
Change-Id: I3ed8599a7123a084bdf20d8f30ba6dcbcea83356
-rw-r--r-- | service/java/com/android/server/wifi/WifiConfigManager.java | 6 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java | 39 |
2 files changed, 45 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java index 1d287f02d..bda1eb7d2 100644 --- a/service/java/com/android/server/wifi/WifiConfigManager.java +++ b/service/java/com/android/server/wifi/WifiConfigManager.java @@ -271,6 +271,7 @@ public class WifiConfigManager { private final WifiPermissionsUtil mWifiPermissionsUtil; private final WifiPermissionsWrapper mWifiPermissionsWrapper; private final WifiInjector mWifiInjector; + private boolean mConnectedMacRandomzationSupported; /** * Local log used for debugging any WifiConfigManager issues. @@ -437,6 +438,8 @@ public class WifiConfigManager { } }); updatePnoRecencySortingSetting(); + mConnectedMacRandomzationSupported = mContext.getResources() + .getBoolean(R.bool.config_wifi_connected_mac_randomization_supported); try { mSystemUiUid = mContext.getPackageManager().getPackageUidAsUser(SYSUI_PACKAGE_NAME, PackageManager.MATCH_SYSTEM_ONLY, UserHandle.USER_SYSTEM); @@ -541,6 +544,9 @@ public class WifiConfigManager { && targetUid != configuration.creatorUid) { maskRandomizedMacAddressInWifiConfiguration(network); } + if (!mConnectedMacRandomzationSupported) { + network.macRandomizationSetting = WifiConfiguration.RANDOMIZATION_NONE; + } return network; } diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java index 3b86be887..686b2098d 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java @@ -164,6 +164,7 @@ public class WifiConfigManagerTest { mResources.setInteger( R.integer.config_wifi_framework_associated_partial_scan_max_num_active_channels, TEST_MAX_NUM_ACTIVE_CHANNELS_FOR_PARTIAL_SCAN); + mResources.setBoolean(R.bool.config_wifi_connected_mac_randomization_supported, true); when(mContext.getResources()).thenReturn(mResources); // Setup UserManager profiles for the default user. @@ -1940,6 +1941,44 @@ public class WifiConfigManagerTest { } /** + * Verifies that macRandomizationSetting is not masked out when MAC randomization is supported. + */ + @Test + public void testGetConfiguredNetworksNotMaskMacRandomizationSetting() { + WifiConfiguration config = WifiConfigurationTestUtil.createOpenNetwork(); + NetworkUpdateResult result = verifyAddNetworkToWifiConfigManager(config); + + MacAddress testMac = MacAddress.createRandomUnicastAddress(); + mWifiConfigManager.setNetworkRandomizedMacAddress(result.getNetworkId(), testMac); + + // Verify macRandomizationSetting is not masked out when feature is supported. + List<WifiConfiguration> configs = mWifiConfigManager.getSavedNetworks(Process.WIFI_UID); + assertEquals(1, configs.size()); + assertEquals(WifiConfiguration.RANDOMIZATION_PERSISTENT, + configs.get(0).macRandomizationSetting); + } + + /** + * Verifies that macRandomizationSetting is masked out to WifiConfiguration.RANDOMIZATION_NONE + * when MAC randomization is not supported on the device. + */ + @Test + public void testGetConfiguredNetworksMasksMacRandomizationSetting() { + mResources.setBoolean(R.bool.config_wifi_connected_mac_randomization_supported, false); + createWifiConfigManager(); + WifiConfiguration config = WifiConfigurationTestUtil.createOpenNetwork(); + NetworkUpdateResult result = verifyAddNetworkToWifiConfigManager(config); + + MacAddress testMac = MacAddress.createRandomUnicastAddress(); + mWifiConfigManager.setNetworkRandomizedMacAddress(result.getNetworkId(), testMac); + + // Verify macRandomizationSetting is masked out when feature is unsupported. + List<WifiConfiguration> configs = mWifiConfigManager.getSavedNetworks(Process.WIFI_UID); + assertEquals(1, configs.size()); + assertEquals(WifiConfiguration.RANDOMIZATION_NONE, configs.get(0).macRandomizationSetting); + } + + /** * Verifies that passwords are masked out when we return external configs except when * explicitly asked for them. */ |