plug memory leak around argv2string() (patch by Andre Guibert de Bruet)
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user