From 812231b11759373fd9b8877e966d8e0249e1dad0 Mon Sep 17 00:00:00 2001 From: mquinson Date: Fri, 26 Jun 2009 20:22:13 +0000 Subject: [PATCH] Sanitize the memory handling of config elems description git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6372 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/surf/surf_config.c | 11 ++++++----- src/xbt/config.c | 5 +++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/surf/surf_config.c b/src/surf/surf_config.c index dbaf64d419..3e76e715e1 100644 --- a/src/surf/surf_config.c +++ b/src/surf/surf_config.c @@ -121,9 +121,9 @@ void surf_config_init(int *argc, char **argv) { while (*(++p) != '\0'); for (i=0;surf_workstation_model_description[i].name;i++) p+=sprintf(p,"%s%s",(i==0?"":", "),surf_workstation_model_description[i].name); - default_value = (char*)"CLM03"; + default_value = xbt_strdup("CLM03"); xbt_cfg_register(&_surf_cfg_set, - "workstation_model", xbt_strdup(description), xbt_cfgelm_string, &default_value, 1, 1, + "workstation_model", description, xbt_cfgelm_string, &default_value, 1, 1, &_surf_cfg_cb__workstation_model, NULL); sprintf(description,"The model to use for the CPU. Possible values: "); @@ -131,9 +131,9 @@ void surf_config_init(int *argc, char **argv) { while (*(++p) != '\0'); for (i=0;surf_cpu_model_description[i].name;i++) p+=sprintf(p,"%s%s",(i==0?"":", "),surf_cpu_model_description[i].name); - default_value = (char*)"Cas01"; + default_value = xbt_strdup("Cas01"); xbt_cfg_register(&_surf_cfg_set, - "cpu_model", xbt_strdup(description), xbt_cfgelm_string, &default_value, 1, 1, + "cpu_model", description, xbt_cfgelm_string, &default_value, 1, 1, &_surf_cfg_cb__cpu_model, NULL); sprintf(description,"The model to use for the network. Possible values: "); @@ -141,10 +141,11 @@ void surf_config_init(int *argc, char **argv) { while (*(++p) != '\0'); for (i=0;surf_network_model_description[i].name;i++) p+=sprintf(p,"%s%s",(i==0?"":", "),surf_network_model_description[i].name); - default_value = (char*)"CM02"; + default_value = xbt_strdup("CM02"); xbt_cfg_register(&_surf_cfg_set, "network_model", description, xbt_cfgelm_string, &default_value, 1, 1, &_surf_cfg_cb__network_model, NULL); + xbt_free(description); double default_TCP_GAMMA = 20000.0; xbt_cfg_register(&_surf_cfg_set,"TCP_gamma","Size of the biggest TCP window", diff --git a/src/xbt/config.c b/src/xbt/config.c index 7d663cb6c9..20875fa7e3 100644 --- a/src/xbt/config.c +++ b/src/xbt/config.c @@ -29,7 +29,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_cfg, xbt, "configuration support"); typedef struct { /* Description */ - const char *desc; + char *desc; /* Allowed type of the variable */ e_xbt_cfgelm_type_t type; @@ -184,6 +184,7 @@ void xbt_cfgelm_free(void *data) DEBUG1("Frees cfgelm %p", c); if (!c) return; + xbt_free(c->desc); xbt_dynar_free(&(c->content)); free(c); } @@ -221,7 +222,7 @@ xbt_cfg_register(xbt_cfg_t *cfg, DEBUG8("Register cfg elm %s (%s) (%d to %d %s (=%d) @%p in set %p)", name, desc, min, max, xbt_cfgelm_type_name[type], type, res, *cfg); - res->desc = desc; + res->desc = xbt_strdup(desc); res->type = type; res->min = min; res->max = max; -- 2.20.1