diff options
author | Oscar Shu <xshu@google.com> | 2019-10-15 17:03:02 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-10-15 17:03:02 +0000 |
commit | 0655b2b84a2e134015757d0c5a8a57367283c416 (patch) | |
tree | bdd31c3ec1c1f2b98201914cbd3d7eb057d2e039 | |
parent | 5a00530815780fd21d7b120bbd471fadf60f1117 (diff) | |
parent | 4892c0b7b6b65584ce7574bf18053ecbba79e024 (diff) |
Merge "[MAC rand] Avoid null Object of mac address" into qt-qpr1-dev
-rw-r--r-- | service/java/com/android/server/wifi/ClientModeImpl.java | 8 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java | 15 |
2 files changed, 20 insertions, 3 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java index 134977a62..438f88550 100644 --- a/service/java/com/android/server/wifi/ClientModeImpl.java +++ b/service/java/com/android/server/wifi/ClientModeImpl.java @@ -3385,12 +3385,14 @@ public class ClientModeImpl extends StateMachine { Log.e(TAG, "No config to change MAC address to"); return; } - MacAddress currentMac = MacAddress.fromString(mWifiNative.getMacAddress(mInterfaceName)); + String currentMacString = mWifiNative.getMacAddress(mInterfaceName); + MacAddress currentMac = currentMacString == null ? null : + MacAddress.fromString(currentMacString); MacAddress newMac = config.getOrCreateRandomizedMacAddress(); mWifiConfigManager.setNetworkRandomizedMacAddress(config.networkId, newMac); if (!WifiConfiguration.isValidMacAddressForRandomization(newMac)) { Log.wtf(TAG, "Config generated an invalid MAC address"); - } else if (currentMac.equals(newMac)) { + } else if (newMac.equals(currentMac)) { Log.d(TAG, "No changes in MAC address"); } else { mWifiMetrics.logStaEvent(StaEvent.TYPE_MAC_CHANGE, config); @@ -3398,7 +3400,7 @@ public class ClientModeImpl extends StateMachine { mWifiNative.setMacAddress(mInterfaceName, newMac); Log.d(TAG, "ConnectedMacRandomization SSID(" + config.getPrintableSsid() + "). setMacAddress(" + newMac.toString() + ") from " - + currentMac.toString() + " = " + setMacSuccess); + + currentMacString + " = " + setMacSuccess); } } diff --git a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java index 26c89adf9..36d8441c7 100644 --- a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java +++ b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java @@ -2749,6 +2749,21 @@ public class ClientModeImplTest { } /** + * Verify that we don't crash when WifiNative returns null as the current MAC address. + * @throws Exception + */ + @Test + public void testMacRandomizationWifiNativeReturningNull() throws Exception { + when(mWifiNative.getMacAddress(anyString())).thenReturn(null); + initializeAndAddNetworkAndVerifySuccess(); + assertEquals(ClientModeImpl.CONNECT_MODE, mCmi.getOperationalModeForTest()); + assertEquals(WifiManager.WIFI_STATE_ENABLED, mCmi.syncGetWifiState()); + + connect(); + verify(mWifiNative).setMacAddress(WIFI_IFACE_NAME, TEST_LOCAL_MAC_ADDRESS); + } + + /** * Verifies that CMD_START_CONNECT make WifiDiagnostics report * CONNECTION_EVENT_STARTED * @throws Exception |