diff options
author | Nate Jiang <qiangjiang@google.com> | 2020-03-27 17:27:19 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-03-27 17:27:19 +0000 |
commit | e79a776da684e2ab3e5165bb442f432c2ced540b (patch) | |
tree | d692c018f4441913f41746afdd3665de426cbe5e | |
parent | f22ecebd1e09c8b7a3fdf7c694ed2b43faebaa20 (diff) | |
parent | 060438fd2b162bf91a296013ce8ca91006728219 (diff) |
Merge "Add or Remove WifiNetworkSuggestion with null should fail." into rvc-dev
-rw-r--r-- | service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java | 29 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java | 19 |
2 files changed, 43 insertions, 5 deletions
diff --git a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java index c82539bce..d5d4e1297 100644 --- a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java +++ b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java @@ -800,15 +800,15 @@ public class WifiNetworkSuggestionsManager { public @WifiManager.NetworkSuggestionsStatusCode int add( List<WifiNetworkSuggestion> networkSuggestions, int uid, String packageName, @Nullable String featureId) { - if (mVerboseLoggingEnabled) { - Log.v(TAG, "Adding " + networkSuggestions.size() + " networks from " + packageName); - } - if (networkSuggestions.isEmpty()) { + if (networkSuggestions == null || networkSuggestions.isEmpty()) { Log.w(TAG, "Empty list of network suggestions for " + packageName + ". Ignoring"); return WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS; } + if (mVerboseLoggingEnabled) { + Log.v(TAG, "Adding " + networkSuggestions.size() + " networks from " + packageName); + } if (!validateNetworkSuggestions(networkSuggestions)) { - Log.e(TAG, "Invalid suggestion from app: " + packageName); + Log.e(TAG, "Invalid suggestion add from app: " + packageName); return WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_ADD_INVALID; } if (!validateCarrierNetworkSuggestions(networkSuggestions, uid, packageName)) { @@ -928,6 +928,9 @@ public class WifiNetworkSuggestionsManager { private boolean validateNetworkSuggestions(List<WifiNetworkSuggestion> networkSuggestions) { for (WifiNetworkSuggestion wns : networkSuggestions) { + if (wns == null || wns.wifiConfiguration == null) { + return false; + } if (wns.passpointConfiguration == null) { if (!WifiConfigurationUtil.validate(wns.wifiConfiguration, WifiConfigurationUtil.VALIDATE_FOR_ADD)) { @@ -1037,9 +1040,18 @@ public class WifiNetworkSuggestionsManager { */ public @WifiManager.NetworkSuggestionsStatusCode int remove( List<WifiNetworkSuggestion> networkSuggestions, int uid, String packageName) { + if (networkSuggestions == null) { + Log.w(TAG, "Null list of network suggestions for " + packageName + ". Ignoring"); + return WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS; + } if (mVerboseLoggingEnabled) { Log.v(TAG, "Removing " + networkSuggestions.size() + " networks from " + packageName); } + + if (!validateNetworkSuggestions(networkSuggestions)) { + Log.e(TAG, "Invalid suggestion remove from app: " + packageName); + return WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_REMOVE_INVALID; + } PerAppInfo perAppInfo = mActiveNetworkSuggestionsPerApp.get(packageName); if (perAppInfo == null) { Log.e(TAG, "Failed to remove network suggestions for " + packageName @@ -2031,7 +2043,14 @@ public class WifiNetworkSuggestionsManager { @NonNull List<WifiNetworkSuggestion> wifiNetworkSuggestions, @NonNull List<ScanResult> scanResults) { Map<WifiNetworkSuggestion, List<ScanResult>> filteredScanResults = new HashMap<>(); + if (wifiNetworkSuggestions == null || wifiNetworkSuggestions.isEmpty() + || scanResults == null || scanResults.isEmpty()) { + return filteredScanResults; + } for (WifiNetworkSuggestion suggestion : wifiNetworkSuggestions) { + if (suggestion == null || suggestion.wifiConfiguration == null) { + continue; + } if (suggestion.passpointConfiguration != null) { filteredScanResults.put(suggestion, mWifiInjector.getPasspointManager().getMatchingScanResults( diff --git a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java index f26ceb664..ea2953a20 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java @@ -649,6 +649,24 @@ public class WifiNetworkSuggestionsManagerTest extends WifiBaseTest { } /** + * Verify add or remove suggestion list with null object will result error code. + */ + @Test + public void testAddRemoveNetworkSuggestionWithNullObject() { + assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_ADD_INVALID, + mWifiNetworkSuggestionsManager.add(Collections.singletonList(null), + TEST_UID_1, TEST_PACKAGE_1, TEST_FEATURE)); + WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion( + WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true); + assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS, + mWifiNetworkSuggestionsManager.add(Collections.singletonList(networkSuggestion), + TEST_UID_1, TEST_PACKAGE_1, TEST_FEATURE)); + assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_REMOVE_INVALID, + mWifiNetworkSuggestionsManager.remove(Collections.singletonList(null), + TEST_UID_1, TEST_PACKAGE_1)); + } + + /** * Verify a successful lookup of a single network suggestion matching the provided scan detail. */ @Test @@ -3292,6 +3310,7 @@ public class WifiNetworkSuggestionsManagerTest extends WifiBaseTest { List<ScanResult> allSrList = new ArrayList<>() {{ add(passpointScanResult); add(nonPasspointScanResult); + add(null); }}; when(mPasspointManager.getMatchingScanResults(eq(mockPasspoint), eq(allSrList))) .thenReturn(ppSrList); |