From a40776c76c28d241dff42c2155e7b91fc021858c Mon Sep 17 00:00:00 2001 From: Dave Wallace Date: Thu, 23 May 2019 12:55:19 -0400 Subject: stats: fix memory leak in statseg config Type: fix Change-Id: I383d5b189efc90ad418725b7e52888138dee0f75 Signed-off-by: Dave Wallace --- src/vpp/stats/stat_segment.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/vpp/stats/stat_segment.c b/src/vpp/stats/stat_segment.c index 4cd00a22641..a5529b993d3 100644 --- a/src/vpp/stats/stat_segment.c +++ b/src/vpp/stats/stat_segment.c @@ -746,23 +746,18 @@ statseg_config (vlib_main_t * vm, unformat_input_t * input) { stat_segment_main_t *sm = &stat_segment_main; - /* set default socket file name when statseg config stanza is empty. */ - sm->socket_name = format (0, "%s", STAT_SEGMENT_SOCKET_FILE); - /* - * NULL-terminate socket name string - * clib_socket_init()->socket_config() use C str* - */ - vec_add1 (sm->socket_name, 0); - while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "socket-name %s", &sm->socket_name)) ; else if (unformat (input, "default")) - sm->socket_name = format (0, "%s", STAT_SEGMENT_SOCKET_FILE); - else - if (unformat - (input, "size %U", unformat_memory_size, &sm->memory_size)) + { + vec_reset_length (sm->socket_name); + sm->socket_name = format (sm->socket_name, "%s", + STAT_SEGMENT_SOCKET_FILE); + } + else if (unformat (input, "size %U", + unformat_memory_size, &sm->memory_size)) ; else if (unformat (input, "per-node-counters on")) sm->node_counters_enabled = 1; @@ -772,6 +767,17 @@ statseg_config (vlib_main_t * vm, unformat_input_t * input) return clib_error_return (0, "unknown input `%U'", format_unformat_error, input); } + + /* set default socket file name when statseg config stanza is empty. */ + if (!vec_len (sm->socket_name)) + sm->socket_name = format (sm->socket_name, "%s", + STAT_SEGMENT_SOCKET_FILE); + /* + * NULL-terminate socket name string + * clib_socket_init()->socket_config() use C str* + */ + vec_terminate_c_string (sm->socket_name); + return 0; } -- cgit 1.2.3-korg