From 90343fd64afa87283f3be2ab7c6504cc47652f27 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Wed, 1 Jun 2016 10:31:17 +0200 Subject: [PATCH] properly avoid buff overflows when displaying the model description --- src/simgrid/sg_config.cpp | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) 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