Don't set the full command string until after verifying that there is not
authorRussell Bryant <russell@russellbryant.com>
Mon, 1 Oct 2007 14:55:10 +0000 (14:55 +0000)
committerRussell Bryant <russell@russellbryant.com>
Mon, 1 Oct 2007 14:55:10 +0000 (14:55 +0000)
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

main/cli.c

index f6988b8..7e7514a 100644 (file)
@@ -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 {