From 0d833ca7fdf8500956191947dee4eb9bda49e86d Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Sat, 3 Aug 2002 14:49:03 +0000 Subject: 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) --- findutils/xargs.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/findutils/xargs.c b/findutils/xargs.c index c63518fe5..bb5987ec9 100644 --- a/findutils/xargs.c +++ b/findutils/xargs.c @@ -49,12 +49,11 @@ int xargs_main(int argc, char **argv) } else { /* concatenate all the arguments passed to xargs together */ int i; - int len = 1; /* for the '\0' */ - cmd_to_be_executed = xmalloc(80); + int len = 0; + for (i = 1; i < argc; i++) + len += ( strlen(argv[i]) + 1 ); + cmd_to_be_executed = xstrndup ( "", len ); 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, " "); } @@ -76,10 +75,9 @@ int xargs_main(int argc, char **argv) continue; /* assemble the command and execute it */ - execstr = xcalloc(strlen(cmd_to_be_executed) + - strlen(file_to_act_on) + 1, sizeof(char)); - strcat(execstr, cmd_to_be_executed); + execstr = xstrndup ( cmd_to_be_executed, xstrlen(cmd_to_be_executed) + xstrlen(file_to_act_on)); strcat(execstr, file_to_act_on); + cmd_output = popen(execstr, "r"); if (cmd_output == NULL) perror_msg_and_die("popen"); -- cgit v1.2.3