summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrant Limberg <grant.limberg@zerotier.com>2018-02-12 09:29:44 -0800
committerGrant Limberg <grant.limberg@zerotier.com>2018-02-12 09:29:44 -0800
commit8828fc75209fb998bb1ba76b69a37969ec843527 (patch)
tree73cacd087b6930f71585fb575b9fd91d0ed7ae9d
parentf049740ae567fd4f4c855766869beb905b226a9b (diff)
downloadinfinitytier-8828fc75209fb998bb1ba76b69a37969ec843527.tar.gz
infinitytier-8828fc75209fb998bb1ba76b69a37969ec843527.zip
some JNI error checking
-rw-r--r--java/jni/com_zerotierone_sdk_Node.cpp37
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)