]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix crash that can occur if CLI registration fails for an aliased command.
authorMark Michelson <mmichelson@digium.com>
Tue, 11 Dec 2012 20:51:47 +0000 (20:51 +0000)
committerMark Michelson <mmichelson@digium.com>
Tue, 11 Dec 2012 20:51:47 +0000 (20:51 +0000)
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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@377843 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_clialiases.c

index 123fe5adcd6c9023be1e25857a5f247ad72450f8..9c1426c57376cba3e5d3231db05f1f186424438a 100644 (file)
@@ -209,7 +209,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);