JNI: added additional null checks on ReleaseByteArrayElements() calls

pull/359/head
Ruby Martin 2026-04-21 12:47:34 -06:00
parent 7b507fb475
commit 6d29fc5209
2 changed files with 44 additions and 15 deletions

View File

@ -785,7 +785,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLContext_memrestoreCertCache
ret = wolfSSL_CTX_memrestore_cert_cache(ctx, buff, buffSz);
}
(*jenv)->ReleaseByteArrayElements(jenv, mem, (jbyte*)buff, JNI_ABORT);
if (buff != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, mem, (jbyte*)buff, JNI_ABORT);
}
return (jint)ret;
#else
@ -888,7 +890,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLContext_loadVerifyBuffer
ret = wolfSSL_CTX_load_verify_buffer(ctx, buff, buffSz, format);
}
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
if (buff != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
}
return (jint)ret;
}
@ -915,7 +919,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLContext_useCertificateBuffer
ret = wolfSSL_CTX_use_certificate_buffer(ctx, buff, buffSz, format);
}
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
if (buff != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
}
return (jint)ret;
}
@ -952,7 +958,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLContext_usePrivateKeyBuffer
XMEMSET(buff, 0, buffSz);
#endif
}
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
if (buff != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
}
return (jint)ret;
}
@ -978,7 +986,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLContext_useCertificateChainBuffer
ret = wolfSSL_CTX_use_certificate_chain_buffer(ctx, buff, buffSz);
}
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
if (buff != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
}
return (jint)ret;
}
@ -1005,7 +1015,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLContext_useCertificateChainBuffer
ctx, buff, buffSz, format);
}
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
if (buff != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
}
return (jint)ret;
}

View File

@ -1276,6 +1276,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_write__J_3BIII
(*jenv)->ExceptionClear(jenv);
return SSL_FAILURE;
}
if (data == NULL) {
return SSL_FAILURE;
}
ret = SSLWriteNonblockingWithSelectPoll(ssl, data + offset,
(int)length, (int)timeout);
@ -1495,6 +1498,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_read__J_3BIII
(*jenv)->ExceptionClear(jenv);
return SSL_FAILURE;
}
if (data == NULL) {
return SSL_FAILURE;
}
size = SSLReadNonblockingWithSelectPoll(ssl, data + offset,
(int)length, (int)timeout);
@ -2422,7 +2428,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_setServerID
ret = wolfSSL_SetServerID(ssl, idBuf, idBufSz, (int)newSess);
}
(*jenv)->ReleaseByteArrayElements(jenv, id, (jbyte*)idBuf, JNI_ABORT);
if (idBuf != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, id, (jbyte*)idBuf, JNI_ABORT);
}
return ret;
#else
@ -2804,7 +2812,7 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_sendHrrCookie
ret = wolfSSL_send_hrr_cookie(ssl, secretBuf, secretSz);
if (secret != NULL) {
if (secret != NULL && secretBuf != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, secret,
(jbyte*)secretBuf, JNI_ABORT);
}
@ -3770,7 +3778,9 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_useCertificateChainBuffer
ssl, buff, buffSz, format);
}
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
if (buff != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, in, (jbyte*)buff, JNI_ABORT);
}
return (jint)ret;
}
@ -5206,7 +5216,7 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_useSNI
WOLFSSL* ssl = (WOLFSSL*)(uintptr_t)sslPtr;
(void)jcl;
if (jenv == NULL || ssl == NULL) {
if (jenv == NULL || ssl == NULL || data == NULL) {
return BAD_FUNC_ARG;
}
@ -5221,7 +5231,10 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_useSNI
ret = wolfSSL_UseSNI(ssl, (byte)type, dataBuf, (word16)dataSz);
}
(*jenv)->ReleaseByteArrayElements(jenv, data, (jbyte*)dataBuf, JNI_ABORT);
if (dataBuf != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, data, (jbyte*)dataBuf,
JNI_ABORT);
}
#else
ret = NOT_COMPILED_IN;
@ -5404,8 +5417,10 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_setSessionTicket
else {
ret = BAD_FUNC_ARG;
}
(*jenv)->ReleaseByteArrayElements(jenv, dataBuf,
(jbyte*)data, JNI_ABORT);
if (data != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, dataBuf,
(jbyte*)data, JNI_ABORT);
}
(void)jcl;
#else
(void)jenv;
@ -5473,8 +5488,10 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_sslSetAlpnProtos
#endif
}
(*jenv)->ReleaseByteArrayElements(jenv, alpnProtos,
(jbyte*)buff, JNI_ABORT);
if (buff != NULL) {
(*jenv)->ReleaseByteArrayElements(jenv, alpnProtos,
(jbyte*)buff, JNI_ABORT);
}
#else
(void)jenv;
(void)jcl;