From: Russell Bryant Date: Mon, 1 Oct 2007 14:55:10 +0000 (+0000) Subject: Don't set the full command string until after verifying that there is not X-Git-Tag: 1.6.0-beta1~3^2~1292 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7c01bf15df4921fbf3f7b3675bd5cdc19774d1e9;p=thirdparty%2Fasterisk.git Don't set the full command string until after verifying that there is not another CLI command with the same command text registered. This prevents a crash if someone accidentally calls ast_cli_register() on the same CLI command data twice. This also fixes a small bug where the helpers list would get unlocked without being locked if building the full command failed. (closes issue #10858, reported by jamesgolovich, patched by me) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@84169 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/cli.c b/main/cli.c index f6988b8b06..7e7514aba1 100644 --- a/main/cli.c +++ b/main/cli.c @@ -1407,16 +1407,14 @@ static int __ast_cli_register(struct ast_cli_entry *e, struct ast_cli_entry *ed) } *dst++ = NULL; } - if (set_full_cmd(e)) - goto done; AST_RWLIST_WRLOCK(&helpers); if (find_cli(e->cmda, 1)) { ast_log(LOG_WARNING, "Command '%s' already registered (or something close enough)\n", e->_full_cmd); - ast_free(e->_full_cmd); - e->_full_cmd = NULL; goto done; } + if (set_full_cmd(e)) + goto done; if (!ed) { e->deprecated = 0; } else {