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

List:       linux-bluetooth
Subject:    [BlueZ v2 20/20] main: Simplify variable assignment
From:       Bastien Nocera <hadess () hadess ! net>
Date:       2024-05-10 12:10:30
Message-ID: 20240510121355.3241456-21-hadess () hadess ! net
[Download RAW message or body]

Error: RESOURCE_LEAK (CWE-772): [#def39] [important]
bluez-5.75/src/main.c:425:2: alloc_fn: Storage is returned from allocation function \
"g_key_file_get_string". bluez-5.75/src/main.c:425:2: var_assign: Assigning: "tmp" = \
storage returned from "g_key_file_get_string(config, group, key, &err)". \
bluez-5.75/src/main.c:433:2: noescape: Assuming resource "tmp" is not freed or \
pointed-to as ellipsis argument to "btd_debug". bluez-5.75/src/main.c:440:2: \
leaked_storage: Variable "tmp" going out of scope leaks the storage it points to. \
438|	} 439|
440|->	return true;
441|   }
442|
---
 src/main.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/src/main.c b/src/main.c
index ac840d684f6d..a31740179941 100644
--- a/src/main.c
+++ b/src/main.c
@@ -420,9 +420,10 @@ static bool parse_config_string(GKeyFile *config, const char \
*group,  const char *key, char **val)
 {
 	GError *err = NULL;
-	char *tmp;
 
-	tmp = g_key_file_get_string(config, group, key, &err);
+	g_return_val_if_fail(val, false);
+
+	*val = g_key_file_get_string(config, group, key, &err);
 	if (err) {
 		if (err->code != G_KEY_FILE_ERROR_KEY_NOT_FOUND)
 			DBG("%s", err->message);
@@ -430,12 +431,7 @@ static bool parse_config_string(GKeyFile *config, const char \
*group,  return false;
 	}
 
-	DBG("%s.%s = %s", group, key, tmp);
-
-	if (val) {
-		g_free(*val);
-		*val = tmp;
-	}
+	DBG("%s.%s = %s", group, key, *val);
 
 	return true;
 }
-- 
2.44.0


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

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