summaryrefslogtreecommitdiffstats
path: root/service
diff options
context:
space:
mode:
authorvandwalle <vandwalle@google.com>2015-01-16 03:32:10 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-01-16 03:32:11 +0000
commit80aa8fb1a21a6df522235287d7b6835cc46310e2 (patch)
treeb1a56842c6d49471173b28d2523dd224e70ed019 /service
parent9572797c3061128bc8f6654854782b61d1b8c71b (diff)
parent2f05eff93e2503c9f29a0d7ede62c71c430ccf5f (diff)
downloadandroid_frameworks_opt_net_wifi-80aa8fb1a21a6df522235287d7b6835cc46310e2.tar.gz
android_frameworks_opt_net_wifi-80aa8fb1a21a6df522235287d7b6835cc46310e2.tar.bz2
android_frameworks_opt_net_wifi-80aa8fb1a21a6df522235287d7b6835cc46310e2.zip
Merge "prevent null BSSID being inject as scan results Bug:18917134" into lmp-mr1-dev
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java15
1 files changed, 14 insertions, 1 deletions
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index 211debf65..2311e34ae 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -122,6 +122,7 @@ import java.util.Locale;
import java.util.Queue;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
@@ -3286,6 +3287,9 @@ public class WifiStateMachine extends StateMachine {
int emptyScanResultCount = 0;
+ // Used for matching BSSID strings, at least one characteer must be a non-zero number
+ private static Pattern mNotZero = Pattern.compile("[1-9a-fA-F]");
+
/**
* Format:
*
@@ -3399,7 +3403,11 @@ public class WifiStateMachine extends StateMachine {
wifiSsid = WifiSsid.createFromAsciiEncoded(
line.substring(SSID_STR.length()));
} else if (line.startsWith(DELIMITER_STR) || line.startsWith(END_STR)) {
- if (bssid != null) {
+ Matcher match = null;
+ if (bssid!= null) {
+ match = mNotZero.matcher(bssid);
+ }
+ if (match != null && !bssid.isEmpty() && match.find()) {
String ssid = (wifiSsid != null) ? wifiSsid.toString() : WifiSsid.NONE;
String key = bssid + ssid;
ScanResult scanResult = mScanResultCache.get(key);
@@ -3424,6 +3432,11 @@ public class WifiStateMachine extends StateMachine {
mNumScanResultsReturned ++; // Keep track of how many scan results we got
// as part of this scan's processing
mScanResults.add(scanResult);
+ } else {
+ if (bssid != null) {
+ loge("setScanResults obtaining null BSSID results <"
+ + bssid + ">, discard it");
+ }
}
bssid = null;
level = 0;