summaryrefslogtreecommitdiff
path: root/main/cli.c
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2017-12-18 21:12:47 -0500
committerCorey Farrell <git@cfware.com>2017-12-19 16:43:49 -0500
commitd51837a1b91cf8bcbf1e61f26d2e9b140ecc7cdb (patch)
treea761a408ce381351d17b87668ccef02ca7588b38 /main/cli.c
parent204dd027dd65125761194ec6a52c02883fd64eb1 (diff)
CLI: Address multiple issues.
* listen uses the variable `s` for the result from ast_poll() then overwrites it with the result of accept(). Create a separate variable poll_result to avoid confusion since ast_poll does not return a file descriptor. * Resolve fd leak that would occur if setsockopt failed in listen. * Reserve an extra byte while processing completion results from remote daemon. This fixes a bug where completion processing used strstr() on a string that was not '\0' terminated. This was no risk to the Asterisk daemon, the bug was only reachable the remote console process. * Resolve leak in handle_showchan when the channel is not found. * Multiple leaks and a deadlock in pbx_config CLI completion. * Fix leaks in "manager show command". Change-Id: I8f633ceb1714867ae30ef4e421858f77c14485a9
Diffstat (limited to 'main/cli.c')
-rw-r--r--main/cli.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/main/cli.c b/main/cli.c
index 207d1f830..1299c2aa7 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -1496,17 +1496,20 @@ static char *handle_showchan(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
return CLI_FAILURE;
}
- output = ast_str_create(8192);
- if (!output) {
- return CLI_FAILURE;
- }
-
chan = ast_channel_get_by_name(a->argv[3]);
if (!chan) {
ast_cli(a->fd, "%s is not a known channel\n", a->argv[3]);
+
return CLI_SUCCESS;
}
+ output = ast_str_create(8192);
+ if (!output) {
+ ast_channel_unref(chan);
+
+ return CLI_FAILURE;
+ }
+
now = ast_tvnow();
ast_channel_lock(chan);