[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-bluetooth
Subject:    [BlueZ v2 18/20] monitor: Work-around memory leak warning
From:       Bastien Nocera <hadess () hadess ! net>
Date:       2024-05-10 12:10:28
Message-ID: 20240510121355.3241456-19-hadess () hadess ! net
[Download RAW message or body]

Work-around this warning by making the so pointer global.

Error: RESOURCE_LEAK (CWE-772): [#def29] [important]
bluez-5.75/monitor/jlink.c:87:3: alloc_fn: Storage is returned from allocation \
function "dlopen". bluez-5.75/monitor/jlink.c:87:3: var_assign: Assigning: "so" = \
storage returned from "dlopen(jlink_so_name[i], 1)". bluez-5.75/monitor/jlink.c:95:2: \
noescape: Resource "so" is not freed or pointed-to in "dlsym". \
bluez-5.75/monitor/jlink.c:96:2: noescape: Resource "so" is not freed or pointed-to \
in "dlsym". bluez-5.75/monitor/jlink.c:97:2: noescape: Resource "so" is not freed or \
pointed-to in "dlsym". bluez-5.75/monitor/jlink.c:98:2: noescape: Resource "so" is \
not freed or pointed-to in "dlsym". bluez-5.75/monitor/jlink.c:99:2: noescape: \
Resource "so" is not freed or pointed-to in "dlsym". \
bluez-5.75/monitor/jlink.c:100:2: noescape: Resource "so" is not freed or pointed-to \
in "dlsym". bluez-5.75/monitor/jlink.c:101:2: noescape: Resource "so" is not freed or \
pointed-to in "dlsym". bluez-5.75/monitor/jlink.c:102:2: noescape: Resource "so" is \
not freed or pointed-to in "dlsym". bluez-5.75/monitor/jlink.c:103:2: noescape: \
Resource "so" is not freed or pointed-to in "dlsym". \
bluez-5.75/monitor/jlink.c:104:2: noescape: Resource "so" is not freed or pointed-to \
in "dlsym". bluez-5.75/monitor/jlink.c:116:2: leaked_storage: Variable "so" going out \
of scope leaks the storage it points to. 114|
115|	/* don't dlclose(so) here cause symbols from it are in use now */
116|->	return 0;
117|   }
118|
---
 monitor/jlink.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/monitor/jlink.c b/monitor/jlink.c
index f9d4037f4cdf..e08cc87139c9 100644
--- a/monitor/jlink.c
+++ b/monitor/jlink.c
@@ -47,6 +47,7 @@ struct rtt_desc {
 };
 
 static struct rtt_desc rtt_desc;
+static void *so = NULL;
 
 typedef int (*jlink_emu_selectbyusbsn_func) (unsigned int sn);
 typedef int (*jlink_open_func) (void);
@@ -80,7 +81,6 @@ static struct jlink jlink;
 
 int jlink_init(void)
 {
-	void *so;
 	unsigned int i;
 
 	for (i = 0; i < NELEM(jlink_so_name); i++) {
@@ -109,6 +109,7 @@ int jlink_init(void)
 			!jlink.emu_getproductname ||
 			!jlink.rtterminal_control || !jlink.rtterminal_read) {
 		dlclose(so);
+		so = NULL;
 		return -EIO;
 	}
 
-- 
2.44.0


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic