Fixed memory leak in this apparently cursed area of the code.
This commit is contained in:
+6
-1
@@ -218,6 +218,7 @@ int parse_message (char * str, Client * c)
|
|||||||
int pos = 0;
|
int pos = 0;
|
||||||
char ch;
|
char ch;
|
||||||
int i;
|
int i;
|
||||||
|
char * arg_space;
|
||||||
int argc =0 ;
|
int argc =0 ;
|
||||||
char *argv[MAX_ARGUMENTS];
|
char *argv[MAX_ARGUMENTS];
|
||||||
int argpos = 0;
|
int argpos = 0;
|
||||||
@@ -229,7 +230,8 @@ int parse_message (char * str, Client * c)
|
|||||||
argpos = 0;
|
argpos = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
argv[0] = malloc(strlen(str)+1);
|
arg_space = malloc(strlen(str)+1);
|
||||||
|
argv[0] = arg_space;
|
||||||
/* We will create a new string that is shorter or equally long as
|
/* We will create a new string that is shorter or equally long as
|
||||||
* the original string str.
|
* the original string str.
|
||||||
*/
|
*/
|
||||||
@@ -338,6 +340,8 @@ int parse_message (char * str, Client * c)
|
|||||||
if (error) {
|
if (error) {
|
||||||
snprintf (errmsg, sizeof(errmsg), "huh? Could not parse command\n");
|
snprintf (errmsg, sizeof(errmsg), "huh? Could not parse command\n");
|
||||||
sock_send_string (c->sock, errmsg);
|
sock_send_string (c->sock, errmsg);
|
||||||
|
free( arg_space );
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now find and call the appropriate function...*/
|
/* Now find and call the appropriate function...*/
|
||||||
@@ -358,5 +362,6 @@ int parse_message (char * str, Client * c)
|
|||||||
sock_send_string (c->sock, errmsg);
|
sock_send_string (c->sock, errmsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free( arg_space );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user