From 7c01bf15df4921fbf3f7b3675bd5cdc19774d1e9 Mon Sep 17 00:00:00 2001
From: Russell Bryant <russell@russellbryant.com>
Date: Mon, 1 Oct 2007 14:55:10 +0000
Subject: [PATCH] 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
---
 main/cli.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

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 {
-- 
GitLab