]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Remember the pointer to the allocated block of memory so that we can free it and...
authorJoshua Colp <jcolp@digium.com>
Thu, 30 Nov 2006 18:17:54 +0000 (18:17 +0000)
committerJoshua Colp <jcolp@digium.com>
Thu, 30 Nov 2006 18:17:54 +0000 (18:17 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@48146 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_features.c

index a33844b1e0e6f326d5cd2271a6ea560c3340c7df..88e4446952d51e1cdf0032c8ec7d0f1fe2ce9d8a 100644 (file)
@@ -2058,7 +2058,8 @@ static int load_config(void)
                ast_unregister_features();
                var = ast_variable_browse(cfg, "applicationmap");
                while(var) {
-                       char *tmp_val=strdup(var->value);
+                       char *tmp_val_orig=strdup(var->value);
+                       char *tmp_val = tmp_val_orig;
                        char *exten, *party=NULL, *app=NULL, *app_args=NULL; 
 
                        if (!tmp_val) { 
@@ -2075,7 +2076,7 @@ static int load_config(void)
 
                        if (!(app && strlen(app)) || !(exten && strlen(exten)) || !(party && strlen(party)) || !(var->name && strlen(var->name))) {
                                ast_log(LOG_NOTICE, "Please check the feature Mapping Syntax, either extension, name, or app aren't provided %s %s %s %s\n",app,exten,party,var->name);
-                               free(tmp_val);
+                               free(tmp_val_orig);
                                var = var->next;
                                continue;
                        }
@@ -2090,7 +2091,7 @@ static int load_config(void)
                                }
                                if (!feature) {
                                        ast_log(LOG_NOTICE, "Malloc failed at feature mapping\n");
-                                       free(tmp_val);
+                                       free(tmp_val_orig);
                                        var = var->next;
                                        continue;
                                }
@@ -2099,7 +2100,6 @@ static int load_config(void)
                                ast_copy_string(feature->sname,var->name,FEATURE_SNAME_LEN);
                                ast_copy_string(feature->app,app,FEATURE_APP_LEN);
                                ast_copy_string(feature->exten, exten,FEATURE_EXTEN_LEN);
-                               free(tmp_val);
                                
                                if (app_args) 
                                        ast_copy_string(feature->app_args,app_args,FEATURE_APP_ARGS_LEN);
@@ -2114,6 +2114,7 @@ static int load_config(void)
                                        ast_set_flag(feature,AST_FEATURE_FLAG_CALLEE);
                                else {
                                        ast_log(LOG_NOTICE, "Invalid party specification for feature '%s', must be caller, or callee\n", var->name);
+                                       free(tmp_val_orig);
                                        var = var->next;
                                        continue;
                                }
@@ -2121,6 +2122,7 @@ static int load_config(void)
                                ast_register_feature(feature);
                                
                                if (option_verbose >=1) ast_verbose(VERBOSE_PREFIX_2 "Mapping Feature '%s' to app '%s' with code '%s'\n", var->name, app, exten);  
+                               free(tmp_val_orig);
                        }
                        var = var->next;
                }