@@ -904,6 +904,9 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_freeSSL
904904 jclass excClass ;
905905 SSLAppData * appData ;
906906 (void )jcl ;
907+ #if defined(HAVE_PK_CALLBACKS ) && (defined(HAVE_ECC ) || !defined(NO_RSA ))
908+ internCtx * pkCtx = NULL ;
909+ #endif
907910
908911 excClass = (* jenv )-> FindClass (jenv , "com/wolfssl/WolfSSLException" );
909912
@@ -965,6 +968,76 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_freeSSL
965968 }
966969#endif
967970
971+ #if defined(HAVE_PK_CALLBACKS )
972+ #ifdef HAVE_ECC
973+ /* free ECC sign callback CTX global reference if set */
974+ pkCtx = (internCtx * ) wolfSSL_GetEccSignCtx ((WOLFSSL * )(uintptr_t )ssl );
975+ if (pkCtx != NULL ) {
976+ if (pkCtx -> obj != NULL ) {
977+ (* jenv )-> DeleteGlobalRef (jenv , pkCtx -> obj );
978+ }
979+ XFREE (pkCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
980+ }
981+
982+ /* free ECC verify callback CTX global reference if set */
983+ pkCtx = (internCtx * )wolfSSL_GetEccVerifyCtx ((WOLFSSL * )(uintptr_t )ssl );
984+ if (pkCtx != NULL ) {
985+ if (pkCtx -> obj != NULL ) {
986+ (* jenv )-> DeleteGlobalRef (jenv , pkCtx -> obj );
987+ }
988+ XFREE (pkCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
989+ }
990+
991+ /* free ECC shared secret callback CTX global reference if set */
992+ pkCtx = (internCtx * )wolfSSL_GetEccSharedSecretCtx (
993+ (WOLFSSL * )(uintptr_t )ssl );
994+ if (pkCtx != NULL ) {
995+ if (pkCtx -> obj != NULL ) {
996+ (* jenv )-> DeleteGlobalRef (jenv , pkCtx -> obj );
997+ }
998+ XFREE (pkCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
999+ }
1000+ #endif /* HAVE_ECC */
1001+
1002+ #ifndef NO_RSA
1003+ /* free RSA sign callback CTX global reference if set */
1004+ pkCtx = (internCtx * ) wolfSSL_GetRsaSignCtx ((WOLFSSL * )(uintptr_t )ssl );
1005+ if (pkCtx != NULL ) {
1006+ if (pkCtx -> obj != NULL ) {
1007+ (* jenv )-> DeleteGlobalRef (jenv , pkCtx -> obj );
1008+ }
1009+ XFREE (pkCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
1010+ }
1011+
1012+ /* free RSA verify callback CTX global reference if set */
1013+ pkCtx = (internCtx * )wolfSSL_GetRsaVerifyCtx ((WOLFSSL * )(uintptr_t )ssl );
1014+ if (pkCtx != NULL ) {
1015+ if (pkCtx -> obj != NULL ) {
1016+ (* jenv )-> DeleteGlobalRef (jenv , pkCtx -> obj );
1017+ }
1018+ XFREE (pkCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
1019+ }
1020+
1021+ /* free RSA encrypt callback CTX global reference if set */
1022+ pkCtx = (internCtx * ) wolfSSL_GetRsaEncCtx ((WOLFSSL * )(uintptr_t )ssl );
1023+ if (pkCtx != NULL ) {
1024+ if (pkCtx -> obj != NULL ) {
1025+ (* jenv )-> DeleteGlobalRef (jenv , pkCtx -> obj );
1026+ }
1027+ XFREE (pkCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
1028+ }
1029+
1030+ /* free RSA decrypt callback CTX global reference if set */
1031+ pkCtx = (internCtx * ) wolfSSL_GetRsaDecCtx ((WOLFSSL * )(uintptr_t )ssl );
1032+ if (pkCtx != NULL ) {
1033+ if (pkCtx -> obj != NULL ) {
1034+ (* jenv )-> DeleteGlobalRef (jenv , pkCtx -> obj );
1035+ }
1036+ XFREE (pkCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
1037+ }
1038+ #endif /* !NO_RSA */
1039+ #endif /* HAVE_PK_CALLBACKS */
1040+
9681041 /* native cleanup */
9691042 wolfSSL_free ((WOLFSSL * )(uintptr_t )ssl );
9701043 ssl = 0 ;
@@ -2729,8 +2802,10 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setEccSignCtx
27292802 /* note: if CTX has not been set up yet, wolfSSL defaults to NULL */
27302803 if (eccSignCtx != NULL ) {
27312804 myCtx = (internCtx * )eccSignCtx ;
2732- if (myCtx -> active == 1 ) {
2733- (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
2805+ if (myCtx != NULL ) {
2806+ if (myCtx -> active == 1 ) {
2807+ (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
2808+ }
27342809 XFREE (myCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
27352810 }
27362811 }
@@ -2805,8 +2880,10 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setEccVerifyCtx
28052880 /* note: if CTX has not been set up yet, wolfSSL defaults to NULL */
28062881 if (eccVerifyCtx != NULL ) {
28072882 myCtx = (internCtx * )eccVerifyCtx ;
2808- if (myCtx -> active == 1 ) {
2809- (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
2883+ if (myCtx != NULL ) {
2884+ if (myCtx -> active == 1 ) {
2885+ (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
2886+ }
28102887 XFREE (myCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
28112888 }
28122889 }
@@ -2824,7 +2901,7 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setEccVerifyCtx
28242901
28252902 /* store global ref to WolfSSLSession object */
28262903 myCtx -> obj = (* jenv )-> NewGlobalRef (jenv , jcl );
2827- if (! myCtx -> obj ) {
2904+ if (myCtx -> obj == NULL ) {
28282905 (* jenv )-> ThrowNew (jenv , excClass ,
28292906 "Unable to store WolfSSLSession object as global reference" );
28302907 return ;
@@ -2881,15 +2958,17 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setEccSharedSecretCtx
28812958 /* note: if CTX has not been set up yet, wolfSSL defaults to NULL */
28822959 if (eccSharedSecretCtx != NULL ) {
28832960 myCtx = (internCtx * )eccSharedSecretCtx ;
2884- if (myCtx -> active == 1 ) {
2885- (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
2961+ if (myCtx != NULL ) {
2962+ if (myCtx -> active == 1 ) {
2963+ (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
2964+ }
28862965 XFREE (myCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
28872966 }
28882967 }
28892968
28902969 /* allocate memory for internal JNI object reference */
28912970 myCtx = XMALLOC (sizeof (internCtx ), NULL , DYNAMIC_TYPE_TMP_BUFFER );
2892- if (! myCtx ) {
2971+ if (myCtx == NULL ) {
28932972 (* jenv )-> ThrowNew (jenv , excClass ,
28942973 "Unable to allocate memory for ECC shared secret context\n" );
28952974 return ;
@@ -2900,7 +2979,7 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setEccSharedSecretCtx
29002979
29012980 /* store global ref to WolfSSLSession object */
29022981 myCtx -> obj = (* jenv )-> NewGlobalRef (jenv , jcl );
2903- if (! myCtx -> obj ) {
2982+ if (myCtx -> obj == NULL ) {
29042983 (* jenv )-> ThrowNew (jenv , excClass ,
29052984 "Unable to store WolfSSLSession object as global reference" );
29062985 return ;
@@ -2956,15 +3035,17 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setRsaSignCtx
29563035 /* note: if CTX has not been set up yet, wolfSSL defaults to NULL */
29573036 if (rsaSignCtx != NULL ) {
29583037 myCtx = (internCtx * )rsaSignCtx ;
2959- if (myCtx -> active == 1 ) {
2960- (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
3038+ if (myCtx != NULL ) {
3039+ if (myCtx -> active == 1 ) {
3040+ (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
3041+ }
29613042 XFREE (myCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
29623043 }
29633044 }
29643045
29653046 /* allocate memory for internal JNI object reference */
29663047 myCtx = XMALLOC (sizeof (internCtx ), NULL , DYNAMIC_TYPE_TMP_BUFFER );
2967- if (! myCtx ) {
3048+ if (myCtx == NULL ) {
29683049 (* jenv )-> ThrowNew (jenv , excClass ,
29693050 "Unable to allocate memory for RSA sign context\n" );
29703051 return ;
@@ -2975,7 +3056,7 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setRsaSignCtx
29753056
29763057 /* store global ref to WolfSSLSession object */
29773058 myCtx -> obj = (* jenv )-> NewGlobalRef (jenv , jcl );
2978- if (! myCtx -> obj ) {
3059+ if (myCtx -> obj == NULL ) {
29793060 (* jenv )-> ThrowNew (jenv , excClass ,
29803061 "Unable to store WolfSSLSession object as global reference" );
29813062 return ;
@@ -3032,15 +3113,17 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setRsaVerifyCtx
30323113 /* note: if CTX has not been set up yet, wolfSSL defaults to NULL */
30333114 if (rsaVerifyCtx != NULL ) {
30343115 myCtx = (internCtx * )rsaVerifyCtx ;
3035- if (myCtx -> active == 1 ) {
3036- (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
3116+ if (myCtx != NULL ) {
3117+ if (myCtx -> active == 1 ) {
3118+ (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
3119+ }
30373120 XFREE (myCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
30383121 }
30393122 }
30403123
30413124 /* allocate memory for internal JNI object reference */
30423125 myCtx = XMALLOC (sizeof (internCtx ), NULL , DYNAMIC_TYPE_TMP_BUFFER );
3043- if (! myCtx ) {
3126+ if (myCtx == NULL ) {
30443127 (* jenv )-> ThrowNew (jenv , excClass ,
30453128 "Unable to allocate memory for RSA verify context\n" );
30463129 return ;
@@ -3051,7 +3134,7 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setRsaVerifyCtx
30513134
30523135 /* store global ref to WolfSSLSession object */
30533136 myCtx -> obj = (* jenv )-> NewGlobalRef (jenv , jcl );
3054- if (! myCtx -> obj ) {
3137+ if (myCtx -> obj == NULL ) {
30553138 (* jenv )-> ThrowNew (jenv , excClass ,
30563139 "Unable to store WolfSSLSession object as global reference" );
30573140 return ;
@@ -3107,15 +3190,17 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setRsaEncCtx
31073190 /* note: if CTX has not been set up yet, wolfSSL defaults to NULL */
31083191 if (rsaEncCtx != NULL ) {
31093192 myCtx = (internCtx * )rsaEncCtx ;
3110- if (myCtx -> active == 1 ) {
3111- (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
3193+ if (myCtx != NULL ) {
3194+ if (myCtx -> active == 1 ) {
3195+ (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
3196+ }
31123197 XFREE (myCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
31133198 }
31143199 }
31153200
31163201 /* allocate memory for internal JNI object reference */
31173202 myCtx = XMALLOC (sizeof (internCtx ), NULL , DYNAMIC_TYPE_TMP_BUFFER );
3118- if (! myCtx ) {
3203+ if (myCtx == NULL ) {
31193204 (* jenv )-> ThrowNew (jenv , excClass ,
31203205 "Unable to allocate memory for RSA encrypt context\n" );
31213206 return ;
@@ -3126,7 +3211,7 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setRsaEncCtx
31263211
31273212 /* store global ref to WolfSSLSession object */
31283213 myCtx -> obj = (* jenv )-> NewGlobalRef (jenv , jcl );
3129- if (! myCtx -> obj ) {
3214+ if (myCtx -> obj == NULL ) {
31303215 (* jenv )-> ThrowNew (jenv , excClass ,
31313216 "Unable to store WolfSSLSession object as global reference" );
31323217 return ;
@@ -3182,15 +3267,17 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setRsaDecCtx
31823267 /* note: if CTX has not been set up yet, wolfSSL defaults to NULL */
31833268 if (rsaDecCtx != NULL ) {
31843269 myCtx = (internCtx * )rsaDecCtx ;
3185- if (myCtx -> active == 1 ) {
3186- (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
3270+ if (myCtx != NULL ) {
3271+ if (myCtx -> active == 1 ) {
3272+ (* jenv )-> DeleteGlobalRef (jenv , myCtx -> obj );
3273+ }
31873274 XFREE (myCtx , NULL , DYNAMIC_TYPE_TMP_BUFFER );
31883275 }
31893276 }
31903277
31913278 /* allocate memory for internal JNI object reference */
31923279 myCtx = XMALLOC (sizeof (internCtx ), NULL , DYNAMIC_TYPE_TMP_BUFFER );
3193- if (! myCtx ) {
3280+ if (myCtx == NULL ) {
31943281 (* jenv )-> ThrowNew (jenv , excClass ,
31953282 "Unable to allocate memory for RSA decrypt context\n" );
31963283 return ;
@@ -3201,7 +3288,7 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_setRsaDecCtx
32013288
32023289 /* store global ref to WolfSSLSession object */
32033290 myCtx -> obj = (* jenv )-> NewGlobalRef (jenv , jcl );
3204- if (! myCtx -> obj ) {
3291+ if (myCtx -> obj == NULL ) {
32053292 (* jenv )-> ThrowNew (jenv , excClass ,
32063293 "Unable to store WolfSSLSession object as global reference" );
32073294 return ;
0 commit comments