diff options
-rw-r--r-- | service/java/com/android/server/wifi/WifiStateMachine.java | 5 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java | 16 |
2 files changed, 21 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java index 8f62288c8..048c86007 100644 --- a/service/java/com/android/server/wifi/WifiStateMachine.java +++ b/service/java/com/android/server/wifi/WifiStateMachine.java @@ -5111,6 +5111,11 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss break; case WifiManager.START_WPS: WpsInfo wpsInfo = (WpsInfo) message.obj; + if (wpsInfo == null) { + loge("Cannot start WPS with null WpsInfo object"); + replyToMessage(message, WifiManager.WPS_FAILED, WifiManager.ERROR); + break; + } WpsResult wpsResult = new WpsResult(); // TODO(b/32898136): Not needed when we start deleting networks from supplicant // on disconnect. diff --git a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java index d3da2e761..20dd11757 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java @@ -1545,4 +1545,20 @@ public class WifiStateMachineTest { addNetworkAndVerifySuccess(false); verify(mWifiConnectivityManager, never()).setUserConnectChoice(eq(0)); } + + /** + * Test START_WPS with a null wpsInfo object fails gracefully (No NPE) + */ + @Test + public void testStartWps_nullWpsInfo() throws Exception { + loadComponentsInStaMode(); + mWsm.setOperationalMode(WifiStateMachine.CONNECT_MODE); + assertEquals(WifiStateMachine.CONNECT_MODE, mWsm.getOperationalModeForTest()); + assertEquals("DisconnectedState", getCurrentState().getName()); + mLooper.startAutoDispatch(); + Message reply = mWsmAsyncChannel.sendMessageSynchronously(WifiManager.START_WPS, 0, 0, + null); + mLooper.stopAutoDispatch(); + assertEquals(WifiManager.WPS_FAILED, reply.what); + } } |