From de9d7e4f3ccb1b199602c1a1ce884df37e54f834 Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Fri, 29 Jul 2016 15:54:03 +0000 Subject: lib: Cleanup some memory issues in CLI Various memory leaks have been fixed and the quagga memory macros are in use. Also consolidated the argv and matching code into one graph traversal. Signed-off-by: Quentin Young --- lib/command.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'lib/command.c') diff --git a/lib/command.c b/lib/command.c index 490c2a0690..d3c6771248 100644 --- a/lib/command.c +++ b/lib/command.c @@ -4190,6 +4190,30 @@ cmd_terminate_element(struct cmd_element *cmd) cmd->tokens = NULL; } +void +free_cmd_element(struct cmd_element *cmd) +{ + if (!cmd) return; + free ((char*) cmd->string); + free ((char*) cmd->doc); + cmd_terminate_element(cmd); + free (cmd); +} + +struct cmd_element * +copy_cmd_element(struct cmd_element *cmd) +{ + struct cmd_element *el = XMALLOC(MTYPE_CMD_TOKENS, sizeof (struct cmd_element)); + el->string = cmd->string ? XSTRDUP(MTYPE_CMD_TOKENS, cmd->string) : NULL; + el->func = cmd->func; + el->doc = cmd->doc ? XSTRDUP(MTYPE_CMD_TOKENS, cmd->doc) : NULL; + el->daemon = cmd->daemon; + el->tokens = cmd->tokens ? vector_copy(cmd->tokens) : NULL; + el->attr = cmd->attr; + fprintf(stderr, "successful copy\n"); + return el; +} + void cmd_terminate () { -- cgit v1.2.3