From: Naveen Albert Date: Mon, 1 Aug 2022 00:30:00 +0000 (+0000) Subject: app_confbridge: Fix memory leak on updated menu options. X-Git-Tag: 19.7.0-rc1~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ba5febd14cf95f1bb518d365f413838a83ac5224;p=thirdparty%2Fasterisk.git app_confbridge: Fix memory leak on updated menu options. If the CONFBRIDGE function is used to dynamically set menu options, a memory leak occurs when a menu option that has been set is overridden, since the menu entry is not destroyed before being freed. This ensures that it is. Additionally, logic that duplicates the destroy function is removed in lieu of the destroy function itself. ASTERISK-28422 #close Change-Id: I71cfb5c24e636984d41086d1333a416dc12ff995 --- diff --git a/apps/confbridge/conf_config_parser.c b/apps/confbridge/conf_config_parser.c index b27adf24ab..d04bcf9dcb 100644 --- a/apps/confbridge/conf_config_parser.c +++ b/apps/confbridge/conf_config_parser.c @@ -1440,10 +1440,7 @@ static int add_menu_entry(struct conf_menu *menu, const char *dtmf, const char * /* if adding any of the actions failed, bail */ if (res) { - struct conf_menu_action *menu_action; - while ((menu_action = AST_LIST_REMOVE_HEAD(&menu_entry->actions, action))) { - ast_free(menu_action); - } + conf_menu_entry_destroy(menu_entry); ast_free(menu_entry); return -1; } @@ -1452,6 +1449,7 @@ static int add_menu_entry(struct conf_menu *menu, const char *dtmf, const char * AST_LIST_TRAVERSE_SAFE_BEGIN(&menu->entries, cur, entry) { if (!strcasecmp(cur->dtmf, menu_entry->dtmf)) { AST_LIST_REMOVE_CURRENT(entry); + conf_menu_entry_destroy(cur); ast_free(cur); break; }