android: Fix conversion of actual Unicode strings (i.e. bytes!=chars)
authorTobias Brunner <tobias@strongswan.org>
Mon, 17 Sep 2012 08:30:39 +0000 (10:30 +0200)
committerTobias Brunner <tobias@strongswan.org>
Mon, 17 Sep 2012 08:30:39 +0000 (10:30 +0200)
src/frontends/android/jni/libandroidbridge/android_jni.h

index bafd6b7..943774e 100644 (file)
@@ -91,14 +91,15 @@ static inline bool androidjni_exception_occurred(JNIEnv *env)
 static inline char *androidjni_convert_jstring(JNIEnv *env, jstring jstr)
 {
        char *str = NULL;
-       jsize len;
+       jsize bytes, chars;
 
        if (jstr)
        {
-               len = (*env)->GetStringUTFLength(env, jstr);
-               str = malloc(len + 1);
-               (*env)->GetStringUTFRegion(env, jstr, 0, len, str);
-               str[len] = '\0';
+               chars = (*env)->GetStringLength(env, jstr);
+               bytes = (*env)->GetStringUTFLength(env, jstr);
+               str = malloc(bytes + 1);
+               (*env)->GetStringUTFRegion(env, jstr, 0, chars, str);
+               str[bytes] = '\0';
        }
        return str;
 }