config.c: Fix off-nominal memory leak.
authorRichard Mudgett <rmudgett@digium.com>
Mon, 12 Oct 2015 16:21:39 +0000 (11:21 -0500)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 12 Oct 2015 20:11:39 +0000 (15:11 -0500)
Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0

main/config.c

index 25bc013..98fa9a2 100644 (file)
@@ -1679,6 +1679,7 @@ static int process_text_line(struct ast_config *cfg, struct ast_category **cat,
                /* If there are options or categories to inherit from, process them now */
                if (c) {
                        if (!(cur = strchr(c, ')'))) {
+                               ast_category_destroy(newcat);
                                ast_log(LOG_WARNING, "parse error: no closing ')', line %d of %s\n", lineno, configfile);
                                return -1;
                        }
@@ -1707,10 +1708,16 @@ static int process_text_line(struct ast_config *cfg, struct ast_category **cat,
 
                                        base = ast_category_get(cfg, cur, "TEMPLATES=include");
                                        if (!base) {
+                                               if (newcat) {
+                                                       ast_category_destroy(newcat);
+                                               }
                                                ast_log(LOG_WARNING, "Inheritance requested, but category '%s' does not exist, line %d of %s\n", cur, lineno, configfile);
                                                return -1;
                                        }
                                        if (ast_category_inherit(*cat, base)) {
+                                               if (newcat) {
+                                                       ast_category_destroy(newcat);
+                                               }
                                                ast_log(LOG_ERROR, "Inheritence requested, but allocation failed\n");
                                                return -1;
                                        }