]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
fix segfault in Java library test application
authorDaniel Lenski <dlenski@gmail.com>
Sun, 5 Aug 2018 23:05:06 +0000 (16:05 -0700)
committerDaniel Lenski <dlenski@gmail.com>
Sun, 5 Aug 2018 23:34:56 +0000 (16:34 -0700)
calling the Java method setCSDWrapper(String wrapper, String TMPDIR, String
PATH) with null TMPDIR and PATH would cause a segfault because
openconnect_set_csd_wrapper(vpninfo, name, value) requires a non-NULL value

jni.c

diff --git a/jni.c b/jni.c
index 45861366614fc2212e2e717dce7142fab063e96e..c377a5cf38e83809938ffd8b3623488fc1110181 100644 (file)
--- a/jni.c
+++ b/jni.c
@@ -879,8 +879,8 @@ JNIEXPORT void JNICALL Java_org_infradead_libopenconnect_LibOpenConnect_setCSDWr
            !get_cstring(ctx->jenv, jarg2, &arg2)) {
                openconnect_setup_csd(ctx->vpninfo, getuid(), 1, arg0);
 
-               openconnect_set_csd_environ(ctx->vpninfo, "TMPDIR", arg1);
-               openconnect_set_csd_environ(ctx->vpninfo, "PATH", arg2);
+               if (arg1) openconnect_set_csd_environ(ctx->vpninfo, "TMPDIR", arg1);
+               if (arg2) openconnect_set_csd_environ(ctx->vpninfo, "PATH", arg2);
        }
 
        release_cstring(ctx->jenv, jarg0, arg0);
@@ -1405,7 +1405,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_infradead_libopenconnect_LibOpenConnect_
 {
        jmethodID mid;
        jobjectArray result;
-       struct libctx ctx = { .jenv = jenv, .jobj = NULL, .async_lock = NULL, vpninfo = -1, loglevel = -1 };
+       struct libctx ctx = { .jenv = jenv, .jobj = NULL, .async_lock = NULL, .vpninfo = NULL, .cmd_fd = -1, .loglevel = -1 };
 
        /* call C library */
        struct oc_vpn_proto *protos;