Fixed invalid EXTERNCMD allocation
externcmd_allocate now returns either a valid EXTERNCMD or NULL.
This commit is contained in:
parent
2d600868f5
commit
ba9da9ae3d
@ -82,11 +82,12 @@ int tokenize_arguments(char* argstr, char** argv)
|
||||
*/
|
||||
EXTERNCMD* externcmd_allocate(char* argstr)
|
||||
{
|
||||
EXTERNCMD* cmd = NULL;
|
||||
EXTERNCMD* cmd = (EXTERNCMD*) malloc(sizeof(EXTERNCMD));
|
||||
char** argv = (char**) malloc(sizeof(char*) * MAXSCALE_EXTCMD_ARG_MAX);
|
||||
|
||||
if (argstr && (cmd = (EXTERNCMD*) malloc(sizeof(EXTERNCMD))) &&
|
||||
(cmd->argv = malloc(sizeof(char*) * MAXSCALE_EXTCMD_ARG_MAX)))
|
||||
if (argstr && cmd && argv)
|
||||
{
|
||||
cmd->argv = argv;
|
||||
if (tokenize_arguments(argstr, cmd->argv) == 0)
|
||||
{
|
||||
if (access(cmd->argv[0], X_OK) != 0)
|
||||
@ -110,6 +111,12 @@ EXTERNCMD* externcmd_allocate(char* argstr)
|
||||
cmd = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
free(cmd);
|
||||
free(argv);
|
||||
cmd = NULL;
|
||||
}
|
||||
return cmd;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user