]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_musiconhold.c: Fix format ref leak when parsing MOH config class. 86/4786/1
authorRichard Mudgett <rmudgett@digium.com>
Tue, 10 Jan 2017 18:30:57 +0000 (12:30 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 24 Jan 2017 19:40:11 +0000 (13:40 -0600)
Change-Id: Ica8e8e2ce7604c2c61ec55bef07dc675361d2ea5

res/res_musiconhold.c

index 6f51820724aafe0b50840c85fd8be73e3b022d21..6b0f00abf7ef0de7ce869011d850a8c019b479ed 100644 (file)
@@ -1433,6 +1433,7 @@ static int local_ast_moh_start(struct ast_channel *chan, const char *mclass, con
                                else if (!strcasecmp(tmp->name, "sort") && !strcasecmp(tmp->value, "alpha")) 
                                        ast_set_flag(mohclass, MOH_SORTALPHA);
                                else if (!strcasecmp(tmp->name, "format")) {
+                                       ao2_cleanup(mohclass->format);
                                        mohclass->format = ast_format_cache_get(tmp->value);
                                        if (!mohclass->format) {
                                                ast_log(LOG_WARNING, "Unknown format '%s' -- defaulting to SLIN\n", tmp->value);
@@ -1765,6 +1766,7 @@ static int load_moh_classes(int reload)
                        } else if (!strcasecmp(var->name, "sort") && !strcasecmp(var->value, "alpha")) {
                                ast_set_flag(class, MOH_SORTALPHA);
                        } else if (!strcasecmp(var->name, "format")) {
+                               ao2_cleanup(class->format);
                                class->format = ast_format_cache_get(var->value);
                                if (!class->format) {
                                        ast_log(LOG_WARNING, "Unknown format '%s' -- defaulting to SLIN\n", var->value);