From c0f9771dccaed58109b891f1928c896c30748b0d Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Fri, 7 Oct 2016 18:41:41 +0000 Subject: [PATCH] lib: Add naive deduplication checks when installing commands Since not all duplicate commands can be caught during graph construction, do a linear search over all commands before installing. Signed-off-by: Quentin Young --- lib/command.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/command.c b/lib/command.c index 96ce661e4a..d1de9ef2aa 100644 --- a/lib/command.c +++ b/lib/command.c @@ -329,6 +329,17 @@ install_element (enum node_type ntype, struct cmd_element *cmd) } // add node to command graph and command vector + // idiotic O(n) deduplication logic, should just use a merkle tree + for (unsigned int i = 0; i < vector_active (cnode->cmd_vector); i++) + { + struct cmd_element *existing = vector_slot (cnode->cmd_vector, i); + if (strmatch (existing->string, cmd->string)) + { + zlog_warn ("Duplicate command: %s\n", cmd->string); + return; + } + } + command_parse_format (cnode->cmdgraph, cmd); vector_set (cnode->cmd_vector, cmd); } -- 2.39.5