Skip to content

Commit

Permalink
app_confbridge: Fix memory leak on updated menu options.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
InterLinked1 authored and gtjoseph committed Aug 8, 2022
1 parent 715aadb commit 31887d6
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions apps/confbridge/conf_config_parser.c
Expand Up @@ -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;
}
Expand All @@ -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;
}
Expand Down

0 comments on commit 31887d6

Please sign in to comment.