From bbbafda1be6182f25fb3e5b43a4e7e2cc9830d6a Mon Sep 17 00:00:00 2001 From: Vinit Deshpande Date: Fri, 2 Oct 2015 13:39:59 -0700 Subject: Fix mismatched buffer size in supplicant and WifiNative The WifiNative response buffer is one byte smaller than the amount of data that supplicant can throw at it. This can lead to a problem where WifiNative gets mismatched answers for its commands. Bug: 24380015 Change-Id: Iadc0afa9390ca5c002022fc951951cb109eac22a --- service/jni/com_android_server_wifi_WifiNative.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/service/jni/com_android_server_wifi_WifiNative.cpp b/service/jni/com_android_server_wifi_WifiNative.cpp index 1cce0b687..31166e38f 100644 --- a/service/jni/com_android_server_wifi_WifiNative.cpp +++ b/service/jni/com_android_server_wifi_WifiNative.cpp @@ -32,7 +32,7 @@ #include "jni_helper.h" #include "rtt.h" #include "wifi_hal_stub.h" -#define REPLY_BUF_SIZE 4096 // wpa_supplicant's maximum size. +#define REPLY_BUF_SIZE 4096 + 1 // wpa_supplicant's maximum size + 1 for nul #define EVENT_BUF_SIZE 2048 namespace android { @@ -138,7 +138,12 @@ static jboolean doBooleanCommand(JNIEnv* env, jstring javaCommand) { if (!doCommand(env, javaCommand, reply, sizeof(reply))) { return JNI_FALSE; } - return (strcmp(reply, "OK") == 0); + jboolean result = (strcmp(reply, "OK") == 0); + if (!result) { + ScopedUtfChars command(env, javaCommand); + ALOGI("command '%s' returned '%s", command.c_str(), reply); + } + return result; } // Send a command to the supplicant, and return the reply as a String. -- cgit v1.2.3