plug memory leak around argv2string() (patch by Andre Guibert de Bruet)

This commit is contained in:
marschap
2008-12-13 08:03:53 +00:00
parent ff75ce809f
commit 064ed18866
+11 -4
View File
@@ -47,16 +47,18 @@ int set_successor(MenuItem *item, char *itemid, Client *client);
static char *argv2string(int argc, char **argv) static char *argv2string(int argc, char **argv)
{ {
char *rtn = NULL; char *rtn = NULL;
int len; unsigned int len;
int i; unsigned int i;
for (i = len = 0; i < argc; i++) for (i = len = 0; i < argc; i++)
len += strlen(argv[i]) + 1; len += strlen(argv[i]) + 1;
rtn = malloc(len + 1); rtn = malloc(len + 1);
if (rtn != NULL) {
rtn[0] = '\0'; rtn[0] = '\0';
for (i = len = 0; i < argc; i++) { for (i = 0; i < argc; i++) {
strcat(rtn, argv[i]); strcat(rtn, argv[i]);
strcat(rtn, " "); strcat(rtn, " ");
} }
}
return rtn; return rtn;
} }
@@ -437,10 +439,15 @@ menu_set_item_func(Client *c, int argc, char **argv)
MenuItem *item; MenuItem *item;
char *menu_id; char *menu_id;
char *item_id; char *item_id;
char *tmp_argv;
int argnr; int argnr;
tmp_argv = argv2string(argc, argv);
if (tmp_argv != NULL) {
debug(RPT_DEBUG, "%s(Client [%d]: %s)", debug(RPT_DEBUG, "%s(Client [%d]: %s)",
__FUNCTION__, c->sock, argv2string(argc, argv)); __FUNCTION__, c->sock, tmp_argv);
free(tmp_argv);
}
if (c->state != ACTIVE) if (c->state != ACTIVE)
return 1; return 1;