@@ -611,6 +611,8 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_write(JNIEnv* jenv,
611611 /* get session mutex from SSL app data */
612612 jniSessLock = (wolfSSL_Mutex * )wolfSSL_get_app_data (ssl );
613613 if (jniSessLock == NULL ) {
614+ (* jenv )-> ReleaseByteArrayElements (jenv , raw , (jbyte * )data ,
615+ JNI_ABORT );
614616 return SSL_FAILURE ;
615617 }
616618
@@ -688,6 +690,8 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_read(JNIEnv* jenv,
688690 /* get session mutex from SSL app data */
689691 jniSessLock = (wolfSSL_Mutex * )wolfSSL_get_app_data (ssl );
690692 if (jniSessLock == NULL ) {
693+ (* jenv )-> ReleaseByteArrayElements (jenv , raw , (jbyte * )data ,
694+ JNI_ABORT );
691695 return WOLFSSL_FAILURE ;
692696 }
693697
@@ -730,7 +734,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_read(JNIEnv* jenv,
730734
731735 } while (err == SSL_ERROR_WANT_WRITE || err == SSL_ERROR_WANT_READ );
732736
733- (* jenv )-> ReleaseByteArrayElements (jenv , raw , (jbyte * )data , JNI_COMMIT );
737+ /* JNI_COMMIT commits the data but does not free the local array
738+ * 0 is used here to both commit and free */
739+ (* jenv )-> ReleaseByteArrayElements (jenv , raw , (jbyte * )data , 0 );
734740 }
735741
736742 return size ;
0 commit comments