summaryrefslogtreecommitdiffstats
path: root/service/jni
diff options
context:
space:
mode:
authorPaul Stewart <pstew@google.com>2016-06-07 22:22:42 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-06-07 22:22:42 +0000
commita9c9a971cf1a68113541a7bb5e6b6ce9c85799f3 (patch)
tree9246f4285402c695060d518d15bc9e98060490f4 /service/jni
parente3235277e0bef27f51c50a1ddb74acbd80c996d5 (diff)
parent15a72380b12016eb008ebf25c2846221d216feeb (diff)
downloadandroid_frameworks_opt_net_wifi-a9c9a971cf1a68113541a7bb5e6b6ce9c85799f3.tar.gz
android_frameworks_opt_net_wifi-a9c9a971cf1a68113541a7bb5e6b6ce9c85799f3.tar.bz2
android_frameworks_opt_net_wifi-a9c9a971cf1a68113541a7bb5e6b6ce9c85799f3.zip
Deal correctly with short strings am: 1921acbf2c am: 49fefde164 am: 444e06c469 am: 0f37e416a4 am: 04fdb2ce41 am: 05e029710c am: 8e0899faab
am: 15a72380b1 Change-Id: If1f7862c71755f10eca68bfbcedcda431e39c0ff
Diffstat (limited to 'service/jni')
-rw-r--r--service/jni/com_android_server_wifi_WifiNative.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/service/jni/com_android_server_wifi_WifiNative.cpp b/service/jni/com_android_server_wifi_WifiNative.cpp
index 765fd9552..49c9b78d2 100644
--- a/service/jni/com_android_server_wifi_WifiNative.cpp
+++ b/service/jni/com_android_server_wifi_WifiNative.cpp
@@ -658,15 +658,23 @@ static byte parseHexChar(char ch) {
}
static byte parseHexByte(const char * &str) {
+ if (str[0] == '\0') {
+ ALOGE("Passed an empty string");
+ return 0;
+ }
byte b = parseHexChar(str[0]);
- if (str[1] == ':' || str[1] == '\0') {
- str += 2;
- return b;
+ if (str[1] == '\0' || str[1] == ':') {
+ str ++;
} else {
b = b << 4 | parseHexChar(str[1]);
- str += 3;
- return b;
+ str += 2;
+ }
+
+ // Skip trailing delimiter if not at the end of the string.
+ if (str[0] != '\0') {
+ str++;
}
+ return b;
}
static void parseMacAddress(const char *str, mac_addr addr) {