summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Brandon Casey <drafnel@gmail.com>2009-06-30 15:24:13 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2009-06-30 16:12:14 -0700
commit6167c136579f17066e985a8bf7d9c020878b9a3e (patch)
tree50b9fe5bcc9285346d08ab2a502d1d23301acefd
parentgit-mv: fix directory separator treatment on Windows (diff)
downloadtgif-6167c136579f17066e985a8bf7d9c020878b9a3e.tar.xz
git.c: avoid allocating one-too-many elements for new argv array
When creating a new argv array from a configured alias and the supplied command line arguments, the new argv was allocated with one element too many. Since the first element of the original argv array is skipped when copying it to the new_argv, the number of elements that are allocated should be reduced by one. 'count' is the number of elements that new_argv contains, and *argcp is the number of elements in the original argv array. So the total allocation (including the terminating NULL entry) for the new_argv array should be: count + (*argcp - 1) + 1 Also, the explicit assignment of the NULL terminating entry can be avoided by just copying it over from the original argv array. Signed-off-by: Brandon Casey <drafnel@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--git.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/git.c b/git.c
index 7d7f949f0d..f4d53f40de 100644
--- a/git.c
+++ b/git.c
@@ -188,10 +188,9 @@ static int handle_alias(int *argcp, const char ***argv)
alias_command);
new_argv = xrealloc(new_argv, sizeof(char *) *
- (count + *argcp + 1));
+ (count + *argcp));
/* insert after command name */
memcpy(new_argv + count, *argv + 1, sizeof(char *) * *argcp);
- new_argv[count+*argcp] = NULL;
*argv = new_argv;
*argcp += count - 1;