From ef4f7dc4ea5619b713bcfaa4985338ec07b9f479 Mon Sep 17 00:00:00 2001 From: xshu Date: Wed, 17 Jun 2020 17:43:53 -0700 Subject: Fix NPE in BssidBlocklistMonitor Due to unexpected orderings of events happening in ClientModeImpl, sometimes invalid inputs are being passed to BssidBlocklistMonitor to cause a NPE. This patch fixes the crash but does not address the root cause. Bug: 159183809 Test: atest com.android.server.wifi Change-Id: I6991b29949f9799662b8d29a4e0621fed9ff8cf2 --- .../server/wifi/BssidBlocklistMonitorTest.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tests') diff --git a/tests/wifitests/src/com/android/server/wifi/BssidBlocklistMonitorTest.java b/tests/wifitests/src/com/android/server/wifi/BssidBlocklistMonitorTest.java index 4369a831b..8cb2e376a 100644 --- a/tests/wifitests/src/com/android/server/wifi/BssidBlocklistMonitorTest.java +++ b/tests/wifitests/src/com/android/server/wifi/BssidBlocklistMonitorTest.java @@ -662,4 +662,24 @@ public class BssidBlocklistMonitorTest { assertEquals(0, mBssidBlocklistMonitor.updateAndGetBssidBlocklist().size()); assertEquals(2, mBssidBlocklistMonitor.getBssidStatusHistoryLoggerSize()); } + + /** + * Verify that invalid inputs are handled and result in no-op. + */ + @Test + public void testBlockBssidForDurationMsInvalidInputs() { + // test invalid BSSID + when(mClock.getWallClockMillis()).thenReturn(0L); + long testDuration = 5500L; + mBssidBlocklistMonitor.blockBssidForDurationMs(null, TEST_SSID_1, testDuration); + assertEquals(0, mBssidBlocklistMonitor.updateAndGetBssidBlocklist().size()); + + // test invalid SSID + mBssidBlocklistMonitor.blockBssidForDurationMs(TEST_BSSID_1, null, testDuration); + assertEquals(0, mBssidBlocklistMonitor.updateAndGetBssidBlocklist().size()); + + // test invalid duration + mBssidBlocklistMonitor.blockBssidForDurationMs(TEST_BSSID_1, TEST_SSID_1, -1); + assertEquals(0, mBssidBlocklistMonitor.updateAndGetBssidBlocklist().size()); + } } -- cgit v1.2.3