Merge pull request #2029 from signalwire/coverity_06042023_mod_java

[mod_java] Coverity CID 1320753 (Resource leak)
This commit is contained in:
Andrey Volk 2023-04-07 00:14:52 +03:00 committed by GitHub
commit d4faa1ddd2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 43 additions and 50 deletions

View File

@ -300,8 +300,7 @@ static switch_status_t create_java_vm(JavaVMOption *options, int optionCount, vm
pJNI_CreateJavaVM = (jint (*)(JavaVM **, void **, void *))switch_dso_func_sym(javaVMHandle, "JNI_CreateJavaVM", &derr);
if (!derr)
{
if (!derr) {
JNIEnv *env;
JavaVMInitArgs initArgs;
jint res;
@ -313,44 +312,38 @@ static switch_status_t create_java_vm(JavaVMOption *options, int optionCount, vm
initArgs.ignoreUnrecognized = JNI_TRUE;
res = pJNI_CreateJavaVM(&javaVM, (void*) &env, &initArgs);
if (res == JNI_OK)
{
// call FindClass here already so that the Java VM executes the static
// initializer (@see org.freeswitch.Launcher) which loads the jni library
// so we can use jni functions right away (for example in the startup method)
if (res == JNI_OK) {
/* call FindClass here already so that the Java VM executes the static
initializer (@see org.freeswitch.Launcher) which loads the jni library
so we can use jni functions right away (for example in the startup method) */
launcherClass = (*env)->FindClass(env, "org/freeswitch/Launcher");
if ( launcherClass == NULL )
{
if ( launcherClass == NULL ) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to find 'org.freeswitch.Launcher' class!\n");
(*env)->ExceptionDescribe(env);
}
// store a global reference for use in the launch_java() function
/* store a global reference for use in the launch_java() function */
launcherClass = (*env)->NewGlobalRef(env, launcherClass);
if ( launcherClass == NULL )
{
if ( launcherClass == NULL ) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Out of memory!\n");
(*env)->ExceptionDescribe(env);
status = SWITCH_STATUS_FALSE;
}
else
{
} else {
status = SWITCH_STATUS_SUCCESS;
}
(*javaVM)->DetachCurrentThread(javaVM);
}
else
{
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error creating Java VM!\n");
status = SWITCH_STATUS_FALSE;
}
}
else
{
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Specified Java VM doesn't have JNI_CreateJavaVM\n");
switch_safe_free(derr);
status = SWITCH_STATUS_FALSE;
}
return status;
}