summaryrefslogtreecommitdiff
path: root/res/res_clialiases.c
diff options
context:
space:
mode:
authorMark Michelson <mmichelson@digium.com>2012-12-11 20:53:34 +0000
committerMark Michelson <mmichelson@digium.com>2012-12-11 20:53:34 +0000
commit619de7f01222e36aac4bd997678dcf2bc15afe70 (patch)
tree283e0921c6eb1286573e177b871aab9096a3b98e /res/res_clialiases.c
parent7f05e2c72ef84b261885d41ef4f5473edba059bc (diff)
Fix crash that can occur if CLI registration fails for an aliased command.
A recent memory leak fix in main/cli.c causes an ast_cli_entry's command field to be freed and NULLed if ast_cli_register() fails. res_clialiases was ignoring the return value of ast_cli_register() and was then passing the NULL command off to a a hash function. This resulted in a crash. The fix is not to ignore the erroneous return value. If ast_cli_register() fails, then we do not continue trying to process the current alias. ........ Merged revisions 377840 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 377842 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 377843 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@377844 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_clialiases.c')
-rw-r--r--res/res_clialiases.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/res/res_clialiases.c b/res/res_clialiases.c
index d9c4088bc..17a847648 100644
--- a/res/res_clialiases.c
+++ b/res/res_clialiases.c
@@ -218,7 +218,10 @@ static void load_config(int reload)
alias->cli_entry.command = alias->alias;
alias->cli_entry.usage = "Aliased CLI Command\n";
- ast_cli_register(&alias->cli_entry);
+ if (ast_cli_register(&alias->cli_entry)) {
+ ao2_ref(alias, -1);
+ continue;
+ }
ao2_link(cli_aliases, alias);
ast_verb(2, "Aliased CLI command '%s' to '%s'\n", v1->name, v1->value);
ao2_ref(alias, -1);