Add extra tests to check if the calling JAVA instance is the expected one
This commit is contained in:
parent
ebfcd03ce5
commit
7e69d96afc
2 changed files with 80 additions and 5 deletions
|
@ -21,7 +21,6 @@
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <map>
|
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
#include <android/log.h>
|
#include <android/log.h>
|
||||||
|
|
||||||
|
@ -53,6 +52,14 @@ static const int ERROR_CODE_KO = -1;
|
||||||
// constants
|
// constants
|
||||||
static const int ACCOUNT_CREATION_RANDOM_MODULO = 256;
|
static const int ACCOUNT_CREATION_RANDOM_MODULO = 256;
|
||||||
|
|
||||||
|
|
||||||
|
// strings
|
||||||
|
static const char *CLASS_OLM_OUTBOUND_GROUP_SESSION = "org/matrix/olm/OlmOutboundGroupSession";
|
||||||
|
static const char *CLASS_OLM_INBOUND_GROUP_SESSION = "org/matrix/olm/OlmInboundGroupSession";
|
||||||
|
static const char *CLASS_OLM_SESSION = "org/matrix/olm/OlmSession";
|
||||||
|
static const char *CLASS_OLM_ACCOUNT = "org/matrix/olm/OlmAccount";
|
||||||
|
static const char *CLASS_OLM_UTILITY = "org/matrix/olm/OlmUtility";
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -70,10 +70,17 @@ jlong getAccountInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
|
||||||
jlong instanceId=-1;
|
jlong instanceId=-1;
|
||||||
jfieldID instanceIdField;
|
jfieldID instanceIdField;
|
||||||
jclass loaderClass;
|
jclass loaderClass;
|
||||||
|
jclass requiredClass = 0;
|
||||||
|
|
||||||
if(NULL!=aJniEnv)
|
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")))
|
if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmAccountId", "J")))
|
||||||
{
|
{
|
||||||
|
@ -110,10 +117,17 @@ jlong getSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
|
||||||
jlong instanceId=-1;
|
jlong instanceId=-1;
|
||||||
jfieldID instanceIdField;
|
jfieldID instanceIdField;
|
||||||
jclass loaderClass;
|
jclass loaderClass;
|
||||||
|
jclass requiredClass = 0;
|
||||||
|
|
||||||
if(NULL!=aJniEnv)
|
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")))
|
if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmSessionId", "J")))
|
||||||
{
|
{
|
||||||
|
@ -151,10 +165,17 @@ jlong getInboundGroupSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
|
||||||
jlong instanceId=-1;
|
jlong instanceId=-1;
|
||||||
jfieldID instanceIdField;
|
jfieldID instanceIdField;
|
||||||
jclass loaderClass;
|
jclass loaderClass;
|
||||||
|
jclass requiredClass = 0;
|
||||||
|
|
||||||
if(NULL!=aJniEnv)
|
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")))
|
if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmInboundGroupSessionId", "J")))
|
||||||
{
|
{
|
||||||
|
@ -191,10 +212,57 @@ jlong getOutboundGroupSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
|
||||||
jlong instanceId=-1;
|
jlong instanceId=-1;
|
||||||
jfieldID instanceIdField;
|
jfieldID instanceIdField;
|
||||||
jclass loaderClass;
|
jclass loaderClass;
|
||||||
|
jclass requiredClass = 0;
|
||||||
|
|
||||||
if(NULL!=aJniEnv)
|
if(NULL!=aJniEnv)
|
||||||
{
|
{
|
||||||
if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
|
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)
|
||||||
|
{
|
||||||
|
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")))
|
if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmOutboundGroupSessionId", "J")))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue