add call to DeleteGlobalRef for native WOLFSSL CRL callback, only currently applies to JNI not JSSE-only
parent
7597b5e35a
commit
8c01c9c93f
|
@ -957,6 +957,14 @@ JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_freeSSL
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_CRL
|
||||||
|
/* release global CRL callback ref if registered */
|
||||||
|
if (g_crlCbIfaceObj != NULL) {
|
||||||
|
(*jenv)->DeleteGlobalRef(jenv, g_crlCbIfaceObj);
|
||||||
|
g_crlCbIfaceObj = NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* native cleanup */
|
/* native cleanup */
|
||||||
wolfSSL_free((WOLFSSL*)(uintptr_t)ssl);
|
wolfSSL_free((WOLFSSL*)(uintptr_t)ssl);
|
||||||
ssl = 0;
|
ssl = 0;
|
||||||
|
@ -2037,7 +2045,7 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_setCRLCb
|
||||||
|
|
||||||
(void)jcl;
|
(void)jcl;
|
||||||
|
|
||||||
if (!jenv || !cb) {
|
if (jenv == NULL) {
|
||||||
return BAD_FUNC_ARG;
|
return BAD_FUNC_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2049,21 +2057,30 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_setCRLCb
|
||||||
return SSL_FAILURE;
|
return SSL_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ssl) {
|
if (ssl == 0) {
|
||||||
(*jenv)->ThrowNew(jenv, excClass,
|
(*jenv)->ThrowNew(jenv, excClass,
|
||||||
"Input WolfSSLSession object was null in "
|
"Input WolfSSLSession object was null in "
|
||||||
"setCRLCb");
|
"setCRLCb");
|
||||||
return SSL_FAILURE;
|
return SSL_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* store Java CRL callback Interface object */
|
/* release global CRL callback ref if already registered */
|
||||||
g_crlCbIfaceObj = (*jenv)->NewGlobalRef(jenv, cb);
|
if (g_crlCbIfaceObj != NULL) {
|
||||||
if (!g_crlCbIfaceObj) {
|
(*jenv)->DeleteGlobalRef(jenv, g_crlCbIfaceObj);
|
||||||
(*jenv)->ThrowNew(jenv, excClass,
|
g_crlCbIfaceObj = NULL;
|
||||||
"Error storing global missingCRLCallback interface");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wolfSSL_SetCRL_Cb((WOLFSSL*)(uintptr_t)ssl, NativeMissingCRLCallback);
|
if (cb != NULL) {
|
||||||
|
/* store Java CRL callback Interface object */
|
||||||
|
g_crlCbIfaceObj = (*jenv)->NewGlobalRef(jenv, cb);
|
||||||
|
if (g_crlCbIfaceObj == NULL) {
|
||||||
|
(*jenv)->ThrowNew(jenv, excClass,
|
||||||
|
"Error storing global missingCRLCallback interface");
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = wolfSSL_SetCRL_Cb((WOLFSSL*)(uintptr_t)ssl,
|
||||||
|
NativeMissingCRLCallback);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Reference in New Issue