@@ -156,7 +156,10 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLCertificate_X509_1set_1issuer_1na
156156 wolfSSL_X509_free (x509In );
157157 }
158158
159- (* jenv )-> ReleaseByteArrayElements (jenv , certDer , (jbyte * )der , JNI_ABORT );
159+ if (der != NULL ) {
160+ (* jenv )-> ReleaseByteArrayElements (jenv , certDer ,
161+ (jbyte * )der , JNI_ABORT );
162+ }
160163
161164 return ret ;
162165#else
@@ -260,8 +263,10 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLCertificate_X509_1set_1pubkey_1na
260263 XMEMSET (derBuf , 0 , derSz );
261264 XFREE (derBuf , NULL , DYNAMIC_TYPE_TMP_BUFFER );
262265 }
263- (* jenv )-> ReleaseByteArrayElements (jenv , fileBytes , (jbyte * )fileBuf ,
264- JNI_ABORT );
266+ if (fileBuf != NULL ) {
267+ (* jenv )-> ReleaseByteArrayElements (jenv , fileBytes ,
268+ (jbyte * )fileBuf , JNI_ABORT );
269+ }
265270
266271 return (jint )ret ;
267272#else
@@ -562,6 +567,11 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLCertificate_X509_1set_1serialNumb
562567 if (serial == NULL ) {
563568 ret = WOLFSSL_FAILURE ;
564569 }
570+ else if (serialSz > (int )(serial -> dataMax - 2 )) {
571+ wolfSSL_ASN1_INTEGER_free (serial );
572+ serial = NULL ;
573+ ret = WOLFSSL_FAILURE ;
574+ }
565575 else {
566576 serial -> data [0 ] = ASN_INTEGER ;
567577 serial -> data [1 ] = serialSz ;
@@ -579,8 +589,10 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLCertificate_X509_1set_1serialNumb
579589 wolfSSL_ASN1_INTEGER_free (serial );
580590 }
581591
582- (* jenv )-> ReleaseByteArrayElements (jenv , serialBytes , (jbyte * )serialBuf ,
583- JNI_ABORT );
592+ if (serialBuf != NULL ) {
593+ (* jenv )-> ReleaseByteArrayElements (jenv , serialBytes ,
594+ (jbyte * )serialBuf , JNI_ABORT );
595+ }
584596
585597 return ret ;
586598#else
@@ -621,7 +633,10 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLCertificate_X509_1set_1subject_1k
621633 ret = wolfSSL_X509_set_subject_key_id (x509 , skidBuf , skidSz );
622634 }
623635
624- (* jenv )-> ReleaseByteArrayElements (jenv , skid , (jbyte * )skidBuf , JNI_ABORT );
636+ if (skidBuf != NULL ) {
637+ (* jenv )-> ReleaseByteArrayElements (jenv , skid ,
638+ (jbyte * )skidBuf , JNI_ABORT );
639+ }
625640
626641 return (jint )ret ;
627642#else
@@ -693,7 +708,10 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLCertificate_X509_1set_1authority_
693708 ret = wolfSSL_X509_set_authority_key_id (x509 , akidBuf , akidSz );
694709 }
695710
696- (* jenv )-> ReleaseByteArrayElements (jenv , akid , (jbyte * )akidBuf , JNI_ABORT );
711+ if (akidBuf != NULL ) {
712+ (* jenv )-> ReleaseByteArrayElements (jenv , akid ,
713+ (jbyte * )akidBuf , JNI_ABORT );
714+ }
697715
698716 return (jint )ret ;
699717#else
@@ -767,7 +785,10 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLCertificate_X509_1CRL_1set_1dist_
767785 ret = wolfSSL_X509_CRL_set_dist_points (x509 , derBuf , derSz );
768786 }
769787
770- (* jenv )-> ReleaseByteArrayElements (jenv , der , (jbyte * )derBuf , JNI_ABORT );
788+ if (derBuf != NULL ) {
789+ (* jenv )-> ReleaseByteArrayElements (jenv , der ,
790+ (jbyte * )derBuf , JNI_ABORT );
791+ }
771792
772793 return (jint )ret ;
773794#else
@@ -968,8 +989,10 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLCertificate_X509_1sign
968989 XMEMSET (derBuf , 0 , derSz );
969990 XFREE (derBuf , NULL , DYNAMIC_TYPE_TMP_BUFFER );
970991 }
971- (* jenv )-> ReleaseByteArrayElements (jenv , fileBytes , (jbyte * )fileBuf ,
972- JNI_ABORT );
992+ if (fileBuf != NULL ) {
993+ (* jenv )-> ReleaseByteArrayElements (jenv , fileBytes ,
994+ (jbyte * )fileBuf , JNI_ABORT );
995+ }
973996 if (mdName != NULL ) {
974997 (* jenv )-> ReleaseStringUTFChars (jenv , digestAlg , mdName );
975998 }
@@ -1008,7 +1031,10 @@ JNIEXPORT jlong JNICALL Java_com_wolfssl_WolfSSLCertificate_X509_1load_1certific
10081031 }
10091032
10101033 /* release array, don't copy back contents */
1011- (* jenv )-> ReleaseByteArrayElements (jenv , in , (jbyte * )certBuf , JNI_ABORT );
1034+ if (certBuf != NULL ) {
1035+ (* jenv )-> ReleaseByteArrayElements (jenv , in ,
1036+ (jbyte * )certBuf , JNI_ABORT );
1037+ }
10121038
10131039 return (jlong )(uintptr_t )x509 ;
10141040}
0 commit comments