From: Tom Hughes Date: Mon, 13 Sep 2004 10:20:34 +0000 (+0000) Subject: When augmenting the argument vector from the VALGRIND_OPTS environment X-Git-Tag: svn/VALGRIND_3_0_0~1580 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ea28504761baf18d1de2dd9c1a59d414ae3a9201;p=thirdparty%2Fvalgrind.git When augmenting the argument vector from the VALGRIND_OPTS environment variable and/or the .valgrindrc files, make sure that enough space is allocated for all the old arguments, not just those that are arguments to valgrind itself. CCMAIL: 88604-done@bugs.kde.org git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2706 --- diff --git a/coregrind/vg_main.c b/coregrind/vg_main.c index a077d58c0d..0bfa60b534 100644 --- a/coregrind/vg_main.c +++ b/coregrind/vg_main.c @@ -551,8 +551,10 @@ static void augment_command_line(Int* vg_argc_inout, char*** vg_argv_inout) /* ' ' separated extra options */ char **from; char **to; - int env_arg_count, f1_arg_count, f2_arg_count; - + int orig_arg_count, env_arg_count, f1_arg_count, f2_arg_count; + + for ( orig_arg_count = 0; vg_argv0[orig_arg_count]; orig_arg_count++ ); + env_arg_count = count_args(env_clo); f1_arg_count = count_args(f1_clo); f2_arg_count = count_args(f2_clo); @@ -563,7 +565,7 @@ static void augment_command_line(Int* vg_argc_inout, char*** vg_argv_inout) /* +2: +1 for null-termination, +1 for added '--' */ from = vg_argv0; - vg_argv0 = malloc( (vg_argc0 + env_arg_count + f1_arg_count + vg_argv0 = malloc( (orig_arg_count + env_arg_count + f1_arg_count + f2_arg_count + 2) * sizeof(char **)); vg_assert(vg_argv0); to = vg_argv0;