From 274c36ecbdf937c95bfdccf710addcb163d6ecfd Mon Sep 17 00:00:00 2001 From: JacobBarthelmeh Date: Sun, 3 Oct 2021 20:12:16 -0700 Subject: [PATCH 1/2] use '0' when releasing array --- native/com_wolfssl_WolfSSLSession.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/native/com_wolfssl_WolfSSLSession.c b/native/com_wolfssl_WolfSSLSession.c index 1cabdbe..719372a 100644 --- a/native/com_wolfssl_WolfSSLSession.c +++ b/native/com_wolfssl_WolfSSLSession.c @@ -730,7 +730,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_read(JNIEnv* jenv, } while (err == SSL_ERROR_WANT_WRITE || err == SSL_ERROR_WANT_READ); - (*jenv)->ReleaseByteArrayElements(jenv, raw, (jbyte*)data, JNI_COMMIT); + /* JNI_COMMIT commits the data but does not free the local array + * 0 is used here to both commit and free */ + (*jenv)->ReleaseByteArrayElements(jenv, raw, (jbyte*)data, 0); } return size; From ebfe3239f0e99e13c87d4093af436c03647575e5 Mon Sep 17 00:00:00 2001 From: JacobBarthelmeh Date: Sun, 3 Oct 2021 21:32:01 -0700 Subject: [PATCH 2/2] abort use of array elements on error case --- native/com_wolfssl_WolfSSLSession.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/native/com_wolfssl_WolfSSLSession.c b/native/com_wolfssl_WolfSSLSession.c index 719372a..2efdcd9 100644 --- a/native/com_wolfssl_WolfSSLSession.c +++ b/native/com_wolfssl_WolfSSLSession.c @@ -611,6 +611,8 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_write(JNIEnv* jenv, /* get session mutex from SSL app data */ jniSessLock = (wolfSSL_Mutex*)wolfSSL_get_app_data(ssl); if (jniSessLock == NULL) { + (*jenv)->ReleaseByteArrayElements(jenv, raw, (jbyte*)data, + JNI_ABORT); return SSL_FAILURE; } @@ -688,6 +690,8 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_read(JNIEnv* jenv, /* get session mutex from SSL app data */ jniSessLock = (wolfSSL_Mutex*)wolfSSL_get_app_data(ssl); if (jniSessLock == NULL) { + (*jenv)->ReleaseByteArrayElements(jenv, raw, (jbyte*)data, + JNI_ABORT); return WOLFSSL_FAILURE; }