]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
In response to 10578, I just ran 1.4 thru valgrind; some of the config leakage I...
authorSteve Murphy <murf@digium.com>
Wed, 7 Nov 2007 21:40:28 +0000 (21:40 +0000)
committerSteve Murphy <murf@digium.com>
Wed, 7 Nov 2007 21:40:28 +0000 (21:40 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89088 65c4cc65-6c06-0410-ace0-fbb531ad65f3

cdr/cdr_tds.c
pbx/pbx_ael.c
res/res_jabber.c

index 444751d1a9d22f1b135612c7fa7ab8eea8e7ff81..2536fae079ecebe9771560b18b5a1025e34ca91e 100644 (file)
@@ -441,9 +441,11 @@ static int tds_load_module(void)
        }
 
        var = ast_variable_browse(cfg, "global");
-       if (!var) /* nothing configured */
+       if (!var) /* nothing configured */ {
+               ast_config_destroy(cfg);
                return 0;
-
+       }
+       
        ptr = ast_variable_retrieve(cfg, "global", "hostname");
        if (ptr)
                hostname = strdup(ptr);
index 1a53c744b55dd0a3f9addeefbd3c4db8e09ec096..2af624c4f78ff2d2ea69f9ecff15fcb1e5d7d1a5 100644 (file)
@@ -2993,7 +2993,7 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
                                strncat(buf2,strp2+1, sizeof(buf2)-strlen(strp2+1)-2);
                                strcat(buf2,"]");
                                for_init->appargs = strdup(buf2);
-                               for_init->app = strdup("Set");
+                               /* for_init->app = strdup("Set"); just set! */
                        } else {
                                strp2 = p->u1.for_init;
                                while (*strp2 && isspace(*strp2))
@@ -3015,7 +3015,8 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
                                                *strp3 = 0; /* remove the closing paren */
 
                                        for_init->appargs = strdup(buf2);
-
+                                       if (for_init->app)
+                                               free(for_init->app);
                                        for_init->app = strdup("Macro");
                                } else {  /* must be a regular app call */
                                        char *strp3;
@@ -3023,6 +3024,8 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
                                        strp3 = strchr(buf2,'(');
                                        if (strp3) {
                                                *strp3 = 0;
+                                               if (for_init->app)
+                                                       free(for_init->app);
                                                for_init->app = strdup(buf2);
                                                for_init->appargs = strdup(strp3+1);
                                                strp3 = strrchr(for_init->appargs, ')');
index df441015304429f0a14bf1c14f4468a92c73c378..d106cd4a1e8045cd8fc9ff02f9bb019c769cf27e 100644 (file)
@@ -2354,6 +2354,7 @@ static int aji_load_config(void)
                }
                cat = ast_category_browse(cfg, cat);
        }
+       ast_config_destroy(cfg); /* or leak memory */
        return 1;
 }