aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tools
diff options
context:
space:
mode:
authorIldar Kamaletdinov <i.kamaletdinov@omp.ru>2022-05-07 20:35:03 +0300
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2022-05-09 13:05:38 -0700
commita4741ef4bf6c6fb262b38a897312e929c2161cf9 (patch)
tree695e9d3de14084bb2f28d9bc8da715234a0af817 /tools
parentefa90050937c5eabc6c70a466bd886f164388484 (diff)
tools: Fix memory leaks in btgatt-server/client
According to man buffer allocated by getline() should be freed by the user program even if getline() failed. Found by Linux Verification Center (linuxtesting.org) with the SVACE static analysis tool.
Diffstat (limited to 'tools')
-rw-r--r--tools/btgatt-client.c6
-rw-r--r--tools/btgatt-server.c5
2 files changed, 9 insertions, 2 deletions
diff --git a/tools/btgatt-client.c b/tools/btgatt-client.c
index 8c9365aa2c..58a03bd486 100644
--- a/tools/btgatt-client.c
+++ b/tools/btgatt-client.c
@@ -1355,12 +1355,16 @@ static void prompt_read_cb(int fd, uint32_t events, void *user_data)
return;
}
- if ((read = getline(&line, &len, stdin)) == -1)
+ read = getline(&line, &len, stdin);
+ if (read < 0) {
+ free(line);
return;
+ }
if (read <= 1) {
cmd_help(cli, NULL);
print_prompt();
+ free(line);
return;
}
diff --git a/tools/btgatt-server.c b/tools/btgatt-server.c
index 4a5d2b7200..90a6c9b0a2 100644
--- a/tools/btgatt-server.c
+++ b/tools/btgatt-server.c
@@ -1080,12 +1080,15 @@ static void prompt_read_cb(int fd, uint32_t events, void *user_data)
}
read = getline(&line, &len, stdin);
- if (read < 0)
+ if (read < 0) {
+ free(line);
return;
+ }
if (read <= 1) {
cmd_help(server, NULL);
print_prompt();
+ free(line);
return;
}