Skip to content

Commit d0e2cea

Browse files
committed
add call to DeleteGlobalRef for native FIPS callback object (HAVE_FIPS builds only)
1 parent b5d5ffd commit d0e2cea

1 file changed

Lines changed: 26 additions & 10 deletions

File tree

native/com_wolfssl_WolfSSL.c

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,14 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSL_cleanup
561561
g_loggingCbIfaceObj = NULL;
562562
}
563563

564+
#ifdef HAVE_FIPS
565+
/* release existing FIPS callback object if set */
566+
if (g_fipsCbIfaceObj != NULL) {
567+
(*jenv)->DeleteGlobalRef(jenv, g_fipsCbIfaceObj);
568+
g_fipsCbIfaceObj = NULL;
569+
}
570+
#endif
571+
564572
return wolfSSL_Cleanup();
565573
}
566574

@@ -800,21 +808,29 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSL_setFIPSCb
800808
(void)jcl;
801809

802810
#ifdef HAVE_FIPS
803-
if (jenv == NULL || callback == NULL) {
811+
if (jenv == NULL) {
804812
return BAD_FUNC_ARG;
805813
}
806814

807-
/* store Java FIPS callback Interface object */
808-
g_fipsCbIfaceObj = (*jenv)->NewGlobalRef(jenv, callback);
809-
if (!g_fipsCbIfaceObj) {
810-
printf("error storing global wolfCrypt FIPS callback interface\n");
811-
return SSL_FAILURE;
815+
/* release existing FIPS callback object if set */
816+
if (g_fipsCbIfaceObj != NULL) {
817+
(*jenv)->DeleteGlobalRef(jenv, g_fipsCbIfaceObj);
818+
g_fipsCbIfaceObj = NULL;
812819
}
813820

814-
/* register NativeFIPSErrorCallback, wraps Java callback */
815-
ret = wolfCrypt_SetCb_fips(NativeFIPSErrorCallback);
816-
if (ret == 0) {
817-
ret = SSL_SUCCESS;
821+
if (callback != NULL) {
822+
/* store Java FIPS callback Interface object */
823+
g_fipsCbIfaceObj = (*jenv)->NewGlobalRef(jenv, callback);
824+
if (g_fipsCbIfaceObj == NULL) {
825+
printf("error storing global wolfCrypt FIPS callback interface\n");
826+
return SSL_FAILURE;
827+
}
828+
829+
/* register NativeFIPSErrorCallback, wraps Java callback */
830+
ret = wolfCrypt_SetCb_fips(NativeFIPSErrorCallback);
831+
if (ret == 0) {
832+
ret = SSL_SUCCESS;
833+
}
818834
}
819835
#else
820836
(void)jenv;

0 commit comments

Comments
 (0)