diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-05-06 14:35:47 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-05-06 14:35:47 +0000 |
commit | bdaeb6bf91d749fb3b564074c01dc9727eb49062 (patch) | |
tree | ac182cfe4fbf8151082fa87151b381b1b0b8c649 /res | |
parent | 20a5a5e5a9a49384386d898da2ad27e01a23ae78 (diff) |
Fix an infinite loop with tab completion of CLI aliases that reference themselves.
(closes issue #15020)
Reported by: junky
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@192700 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-rw-r--r-- | res/res_clialiases.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/res/res_clialiases.c b/res/res_clialiases.c index 156212f6b..d7e38bbd7 100644 --- a/res/res_clialiases.c +++ b/res/res_clialiases.c @@ -98,7 +98,9 @@ static char *cli_alias_passthrough(struct ast_cli_entry *e, int cmd, struct ast_ case CLI_GENERATE: line = a->line; line += (strlen(alias->alias)); - if (!ast_strlen_zero(a->word)) { + if (!strncmp(alias->alias, alias->real_cmd, strlen(alias->alias))) { + generator = NULL; + } else if (!ast_strlen_zero(a->word)) { struct ast_str *real_cmd = ast_str_alloca(strlen(alias->real_cmd) + strlen(line) + 1); ast_str_append(&real_cmd, 0, "%s%s", alias->real_cmd, line); generator = ast_cli_generator(ast_str_buffer(real_cmd), a->word, a->n); |