From: Martin Quinson Date: Wed, 1 Jun 2016 08:31:17 +0000 (+0200) Subject: properly avoid buff overflows when displaying the model description X-Git-Tag: v3_14~1072 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/90343fd64afa87283f3be2ab7c6504cc47652f27?hp=de7204b4485db1055c6c84d2025423a199192084 properly avoid buff overflows when displaying the model description --- diff --git a/src/simgrid/sg_config.cpp b/src/simgrid/sg_config.cpp index 7578e0506f..bf3dc3b5c0 100644 --- a/src/simgrid/sg_config.cpp +++ b/src/simgrid/sg_config.cpp @@ -363,50 +363,53 @@ static void _sg_cfg_cb__surf_network_crosstraffic(const char *name) } /* build description line with possible values */ -static void describe_model(char *result, +static void describe_model(char *result,int resultsize, const s_surf_model_description_t model_description[], const char *name, const char *description) { - char *p = result + - snprintf(result,1024-strlen(result), "%s. Possible values: %s", description, + char *p = result; + p += snprintf(result,resultsize-1, "%s. Possible values: %s", description, model_description[0].name ? model_description[0].name : "n/a"); for (int i = 1; model_description[i].name; i++) - p += snprintf(p,1024, ", %s", model_description[i].name); - snprintf(p,1024, ".\n (use 'help' as a value to see the long description of each %s)", name); + p += snprintf(p,resultsize-(p-result)-1, ", %s", model_description[i].name); + p += snprintf(p,resultsize-(p-result)-1, ".\n (use 'help' as a value to see the long description of each %s)", name); + + xbt_assert(p