mirror of
https://github.com/sheumann/hush.git
synced 2024-12-22 14:30:31 +00:00
Fixed a bug in xarg: string data was strcat'ed to a malloc'ed buffer - and
malloc does not clear memory by default (somehow this worked on x86, but not on arm)
This commit is contained in:
parent
49c024addd
commit
0d833ca7fd
@ -49,12 +49,11 @@ int xargs_main(int argc, char **argv)
|
|||||||
} else {
|
} else {
|
||||||
/* concatenate all the arguments passed to xargs together */
|
/* concatenate all the arguments passed to xargs together */
|
||||||
int i;
|
int i;
|
||||||
int len = 1; /* for the '\0' */
|
int len = 0;
|
||||||
cmd_to_be_executed = xmalloc(80);
|
for (i = 1; i < argc; i++)
|
||||||
|
len += ( strlen(argv[i]) + 1 );
|
||||||
|
cmd_to_be_executed = xstrndup ( "", len );
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
len += strlen(argv[i]);
|
|
||||||
len += 1; /* for the space between the args */
|
|
||||||
cmd_to_be_executed = xrealloc(cmd_to_be_executed, len);
|
|
||||||
strcat(cmd_to_be_executed, argv[i]);
|
strcat(cmd_to_be_executed, argv[i]);
|
||||||
strcat(cmd_to_be_executed, " ");
|
strcat(cmd_to_be_executed, " ");
|
||||||
}
|
}
|
||||||
@ -76,10 +75,9 @@ int xargs_main(int argc, char **argv)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* assemble the command and execute it */
|
/* assemble the command and execute it */
|
||||||
execstr = xcalloc(strlen(cmd_to_be_executed) +
|
execstr = xstrndup ( cmd_to_be_executed, xstrlen(cmd_to_be_executed) + xstrlen(file_to_act_on));
|
||||||
strlen(file_to_act_on) + 1, sizeof(char));
|
|
||||||
strcat(execstr, cmd_to_be_executed);
|
|
||||||
strcat(execstr, file_to_act_on);
|
strcat(execstr, file_to_act_on);
|
||||||
|
|
||||||
cmd_output = popen(execstr, "r");
|
cmd_output = popen(execstr, "r");
|
||||||
if (cmd_output == NULL)
|
if (cmd_output == NULL)
|
||||||
perror_msg_and_die("popen");
|
perror_msg_and_die("popen");
|
||||||
|
Loading…
Reference in New Issue
Block a user