From 37d6c6aaec8debe5d275b1055a45fc22e030c1c7 Mon Sep 17 00:00:00 2001 From: Un1q32 Date: Fri, 25 Apr 2025 21:56:49 -0400 Subject: [PATCH] fix a memory leak and some potential issues --- oc2rnet.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/oc2rnet.c b/oc2rnet.c index a3d4cf9..8c9d01c 100644 --- a/oc2rnet.c +++ b/oc2rnet.c @@ -244,16 +244,20 @@ Java_li_cil_oc2_common_inet_DefaultSessionLayer_sendICMP( ssize_t retsize = doPing(*(uint32_t *)addr, size, (char *)olddata, (char *)response, timeout); - if (retsize == -1) - return NULL; - - jbyteArray ret = (*env)->NewByteArray(env, retsize); - (*env)->SetByteArrayRegion(env, ret, 0, retsize, (const jbyte *)response); - free(response); (*env)->ReleaseByteArrayElements(env, data, olddata, JNI_ABORT); (*env)->ReleaseByteArrayElements(env, ip, addr, JNI_ABORT); - if (!ret) + if (retsize == -1) { + free(response); return NULL; + } + + jbyteArray ret = (*env)->NewByteArray(env, retsize); + if (!ret) { + free(response); + return NULL; + } + (*env)->SetByteArrayRegion(env, ret, 0, retsize, (const jbyte *)response); + free(response); return ret; }