From: Nathan Bruning Date: Thu, 10 Dec 2020 23:06:56 +0000 (+0100) Subject: res_musiconhold: Don't crash when real-time doesn't return any entries X-Git-Tag: 18.2.0-rc1~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0774d9f9aa663b42d9a40a15d017c817c12e3a5f;p=thirdparty%2Fasterisk.git res_musiconhold: Don't crash when real-time doesn't return any entries ASTERISK-29211 #close Change-Id: Ifbf0a4f786ab2a52342f9d1a1db4c9907f069877 --- 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 */