aboutsummaryrefslogtreecommitdiff
path: root/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp
diff options
context:
space:
mode:
authorpedroGitt <pedro.contreiras@amdocs.com>2016-10-17 16:48:29 +0200
committerpedroGitt <pedro.contreiras@amdocs.com>2016-10-17 16:48:29 +0200
commit7e69d96afcb05fed7d5b75b6cbe786c0c1a86965 (patch)
tree2d1ec0eee478c2d7e77323fc48289af86383a266 /java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp
parentebfcd03ce5b627236edf2c2c1f334f5c59f9d291 (diff)
Add extra tests to check if the calling JAVA instance is the expected one
Diffstat (limited to 'java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp')
-rw-r--r--java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp76
1 files changed, 72 insertions, 4 deletions
diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp b/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp
index 1d64d75..c518578 100644
--- a/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp
+++ b/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp
@@ -70,10 +70,17 @@ jlong getAccountInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
jlong instanceId=-1;
jfieldID instanceIdField;
jclass loaderClass;
+ jclass requiredClass = 0;
if(NULL!=aJniEnv)
{
- if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
+ requiredClass = aJniEnv->FindClass(CLASS_OLM_ACCOUNT);
+
+ if((0 != requiredClass) && (JNI_TRUE != aJniEnv->IsInstanceOf(aJavaObject, requiredClass)))
+ {
+ LOGD("## getAccountInstanceId() failure - invalid instance of");
+ }
+ else if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
{
if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmAccountId", "J")))
{
@@ -110,10 +117,17 @@ jlong getSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
jlong instanceId=-1;
jfieldID instanceIdField;
jclass loaderClass;
+ jclass requiredClass = 0;
if(NULL!=aJniEnv)
{
- if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
+ requiredClass = aJniEnv->FindClass(CLASS_OLM_SESSION);
+
+ if((0 != requiredClass) && (JNI_TRUE != aJniEnv->IsInstanceOf(aJavaObject, requiredClass)))
+ {
+ LOGD("## getSessionInstanceId() failure - invalid instance of");
+ }
+ else if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
{
if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmSessionId", "J")))
{
@@ -151,10 +165,17 @@ jlong getInboundGroupSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
jlong instanceId=-1;
jfieldID instanceIdField;
jclass loaderClass;
+ jclass requiredClass = 0;
if(NULL!=aJniEnv)
{
- if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
+ requiredClass = aJniEnv->FindClass(CLASS_OLM_INBOUND_GROUP_SESSION);
+
+ if((0 != requiredClass) && (JNI_TRUE != aJniEnv->IsInstanceOf(aJavaObject, requiredClass)))
+ {
+ LOGD("## getInboundGroupSessionInstanceId() failure - invalid instance of");
+ }
+ else if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
{
if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmInboundGroupSessionId", "J")))
{
@@ -191,10 +212,57 @@ jlong getOutboundGroupSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
jlong instanceId=-1;
jfieldID instanceIdField;
jclass loaderClass;
+ jclass requiredClass = 0;
+
+ if(NULL!=aJniEnv)
+ {
+ requiredClass = aJniEnv->FindClass(CLASS_OLM_OUTBOUND_GROUP_SESSION);
+
+ if((0 != requiredClass) && (JNI_TRUE != aJniEnv->IsInstanceOf(aJavaObject, requiredClass)))
+ {
+ LOGD("## getOutboundGroupSessionInstanceId() failure - invalid instance of");
+ }
+ else if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
+ {
+ if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmOutboundGroupSessionId", "J")))
+ {
+ instanceId = aJniEnv->GetLongField(aJavaObject, instanceIdField);
+ aJniEnv->DeleteLocalRef(loaderClass);
+ }
+ else
+ {
+ LOGD("## getOutboundGroupSessionInstanceId() ERROR! GetFieldID=null");
+ }
+ }
+ else
+ {
+ LOGD("## getOutboundGroupSessionInstanceId() ERROR! GetObjectClass=null");
+ }
+ }
+ else
+ {
+ LOGD("## getOutboundGroupSessionInstanceId() ERROR! aJniEnv=NULL");
+ }
+
+ return instanceId;
+}
+
+jlong getUtilityInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
+{
+ jlong instanceId=-1;
+ jfieldID instanceIdField;
+ jclass loaderClass;
+ jclass requiredClass = 0;
if(NULL!=aJniEnv)
{
- if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
+ requiredClass = aJniEnv->FindClass(CLASS_OLM_UTILITY);
+
+ if((0 != requiredClass) && (JNI_TRUE != aJniEnv->IsInstanceOf(aJavaObject, requiredClass)))
+ {
+ LOGD("## getOutboundGroupSessionInstanceId() failure - invalid instance of");
+ }
+ else if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
{
if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmOutboundGroupSessionId", "J")))
{