Fixed memory leak in this apparently cursed area of the code.

This commit is contained in:
robijn
2002-07-13 22:25:18 +00:00
parent 895f45b589
commit fa6dadd1b2
+6 -1
View File
@@ -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;
} }