summaryrefslogtreecommitdiffstats
path: root/service/jni
diff options
context:
space:
mode:
authorVinit Deshpande <vinitd@google.com>2015-10-02 13:39:59 -0700
committerVinit Deshpande <vinitd@google.com>2015-10-02 13:39:59 -0700
commitbbbafda1be6182f25fb3e5b43a4e7e2cc9830d6a (patch)
tree60349b8c9acc891124adffc234c33a3f1b22d236 /service/jni
parent57b578f21d16d3b0da0162cb6eb9fa8b29895d8f (diff)
downloadandroid_frameworks_opt_net_wifi-bbbafda1be6182f25fb3e5b43a4e7e2cc9830d6a.tar.gz
android_frameworks_opt_net_wifi-bbbafda1be6182f25fb3e5b43a4e7e2cc9830d6a.tar.bz2
android_frameworks_opt_net_wifi-bbbafda1be6182f25fb3e5b43a4e7e2cc9830d6a.zip
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
Diffstat (limited to 'service/jni')
-rw-r--r--service/jni/com_android_server_wifi_WifiNative.cpp9
1 files 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.