[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Linphone-developers] [PATCH] Fix crash that occurs when illegal UTF-8 c
From: |
Olivier Schonken |
Subject: |
[Linphone-developers] [PATCH] Fix crash that occurs when illegal UTF-8 characters are sent in a message |
Date: |
Sun, 28 Sep 2014 23:02:28 +0200 |
Change ChatMessageImpl to pass jbyteArray from JNI, and create string in java
layer. This works around buggy NewStringUTF function which crashes the
application when illegal modified UTF-8 characters are received.
(e.g. some iOS emoticons)
Signed-off-by: Olivier Schonken <address@hidden>
---
coreapi/linphonecore_jni.cc | 12 ++++++++++++
java/impl/org/linphone/core/LinphoneChatMessageImpl.java | 12 +++++++++++-
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc
index bcdf0fd..d13fda2 100644
--- a/coreapi/linphonecore_jni.cc
+++ b/coreapi/linphonecore_jni.cc
@@ -2719,6 +2719,18 @@ extern "C" void
Java_org_linphone_core_LinphoneChatMessageImpl_store(JNIEnv* en
linphone_chat_message_store((LinphoneChatMessage*)ptr);
}
+
+extern "C" jbyteArray
Java_org_linphone_core_LinphoneChatMessageImpl_getTextByte(JNIEnv* env
+
,jobject thiz
+
,jlong ptr) {
+ const char *ubuf;
+ ubuf = linphone_chat_message_get_text((LinphoneChatMessage*)ptr);
+ jbyteArray bArray=env->NewByteArray(strlen((const char *)ubuf));
+ env->SetByteArrayRegion(bArray, 0, strlen((const char *)ubuf), (jbyte
*)ubuf);
+ return bArray;
+}
+
+
extern "C" jstring
Java_org_linphone_core_LinphoneChatMessageImpl_getText(JNIEnv* env
,jobject thiz
,jlong ptr) {
diff --git a/java/impl/org/linphone/core/LinphoneChatMessageImpl.java
b/java/impl/org/linphone/core/LinphoneChatMessageImpl.java
index d25ae42..8af6606 100644
--- a/java/impl/org/linphone/core/LinphoneChatMessageImpl.java
+++ b/java/impl/org/linphone/core/LinphoneChatMessageImpl.java
@@ -14,6 +14,7 @@ public class LinphoneChatMessageImpl implements
LinphoneChatMessage {
private native void store(long ptr);
private native int getStorageId(long ptr);
private native void unref(long ptr);
+ private native byte [] getTextByte(long ptr);
protected LinphoneChatMessageImpl(long aNativePtr) {
nativePtr = aNativePtr;
@@ -25,7 +26,16 @@ public class LinphoneChatMessageImpl implements
LinphoneChatMessage {
@Override
public String getText() {
- return getText(nativePtr);
+ String utf8text;
+ try
+ {
+ utf8text = new String(getTextByte(nativePtr),"UTF-8");
+ }
+ catch (Exception UTFDataFormatException)
+ {
+ utf8text = new String( "Illegal character in message");
+ }
+ return utf8text;
}
@Override
--
1.8.3.2
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Linphone-developers] [PATCH] Fix crash that occurs when illegal UTF-8 characters are sent in a message,
Olivier Schonken <=