diff options
author | Grant Limberg <grant.limberg@zerotier.com> | 2018-02-12 09:29:44 -0800 |
---|---|---|
committer | Grant Limberg <grant.limberg@zerotier.com> | 2018-02-12 09:29:44 -0800 |
commit | 8828fc75209fb998bb1ba76b69a37969ec843527 (patch) | |
tree | 73cacd087b6930f71585fb575b9fd91d0ed7ae9d | |
parent | f049740ae567fd4f4c855766869beb905b226a9b (diff) | |
download | infinitytier-8828fc75209fb998bb1ba76b69a37969ec843527.tar.gz infinitytier-8828fc75209fb998bb1ba76b69a37969ec843527.zip |
some JNI error checking
-rw-r--r-- | java/jni/com_zerotierone_sdk_Node.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index 02a42837..9a36e99b 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -120,6 +120,11 @@ namespace { JNIEnv *env = NULL; ref->jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + if (ref->configListener == NULL) { + LOGE("configListener is NULL"); + return -1; + } + jclass configListenerClass = env->GetObjectClass(ref->configListener); if(configListenerClass == NULL) { @@ -169,13 +174,19 @@ namespace { unsigned int frameLength) { LOGV("VirtualNetworkFrameFunctionCallback"); +#ifndef NDEBUG unsigned char* local = (unsigned char*)frameData; LOGV("Type Bytes: 0x%02x%02x", local[12], local[13]); +#endif JniRef *ref = (JniRef*)userData; assert(ref->node == node); JNIEnv *env = NULL; ref->jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + if (ref->frameListener == NULL) { + LOGE("frameListener is NULL"); + return; + } jclass frameListenerClass = env->GetObjectClass(ref->frameListener); if(env->ExceptionCheck() || frameListenerClass == NULL) @@ -228,6 +239,10 @@ namespace { JNIEnv *env = NULL; ref->jvm->GetEnv((void **) &env, JNI_VERSION_1_6); + if (ref->eventListener == NULL) { + LOGE("eventListener is NULL"); + return; + } jclass eventListenerClass = env->GetObjectClass(ref->eventListener); if (eventListenerClass == NULL) { @@ -332,10 +347,19 @@ namespace { return; } + if (strlen(p) < 1) { + return; + } + JniRef *ref = (JniRef*)userData; JNIEnv *env = NULL; ref->jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + if (ref->dataStorePutListener == NULL) { + LOGE("dataStorePutListener is NULL"); + return; + } + jclass dataStorePutClass = env->GetObjectClass(ref->dataStorePutListener); if (dataStorePutClass == NULL) { @@ -416,10 +440,19 @@ namespace { return -1; } + if (strlen(p) < 1) { + return -1; + } + JniRef *ref = (JniRef*)userData; JNIEnv *env = NULL; ref->jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + if (ref->dataStoreGetListener == NULL) { + LOGE("dataStoreGetListener is NULL"); + return -2; + } + jclass dataStoreGetClass = env->GetObjectClass(ref->dataStoreGetListener); if(dataStoreGetClass == NULL) { @@ -487,6 +520,10 @@ namespace { JNIEnv *env = NULL; ref->jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + if (ref->packetSender == NULL) { + LOGE("packetSender is NULL"); + return -1; + } jclass packetSenderClass = env->GetObjectClass(ref->packetSender); if(packetSenderClass == NULL) |