diff options
author | Ildar Kamaletdinov <i.kamaletdinov@omp.ru> | 2022-05-07 20:35:03 +0300 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2022-05-09 13:05:38 -0700 |
commit | a4741ef4bf6c6fb262b38a897312e929c2161cf9 (patch) | |
tree | 695e9d3de14084bb2f28d9bc8da715234a0af817 /tools | |
parent | efa90050937c5eabc6c70a466bd886f164388484 (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.c | 6 | ||||
-rw-r--r-- | tools/btgatt-server.c | 5 |
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; } |