From 0774d9f9aa663b42d9a40a15d017c817c12e3a5f Mon Sep 17 00:00:00 2001 From: Nathan Bruning <nathan@iperity.com> Date: Fri, 11 Dec 2020 00:06:56 +0100 Subject: [PATCH] res_musiconhold: Don't crash when real-time doesn't return any entries ASTERISK-29211 #close Change-Id: Ifbf0a4f786ab2a52342f9d1a1db4c9907f069877 --- res/res_musiconhold.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c index db7dde71ad..8ac3b927cf 100644 --- a/res/res_musiconhold.c +++ b/res/res_musiconhold.c @@ -1613,18 +1613,21 @@ static struct ast_variable *load_realtime_musiconhold(const char *name) char *category = NULL; size_t entry_count = 0; - while ((category = ast_category_browse(entries, category))) { - const char *entry = ast_variable_retrieve(entries, category, "entry"); - - if (entry) { - struct ast_variable *dup = ast_variable_new("entry", entry, ""); - if (dup) { - entry_count++; - ast_variable_list_append(&var, dup); + /* entries is NULL if there are no results */ + if (entries) { + while ((category = ast_category_browse(entries, category))) { + const char *entry = ast_variable_retrieve(entries, category, "entry"); + + if (entry) { + struct ast_variable *dup = ast_variable_new("entry", entry, ""); + if (dup) { + entry_count++; + ast_variable_list_append(&var, dup); + } } } + ast_config_destroy(entries); } - ast_config_destroy(entries); if (entry_count == 0) { /* Behave as though this class doesn't exist */ -- GitLab