Subject: Re: [PATCH] setup_revisions(): do not access outside argv

From: Johannes Sixt <[email-masked]>
Date: Wed, 20 May 2009 10:15:56 +0200

Nguyễn Thái Ngọc Duy schrieb:
> Signed-off-by: Nguyễn Thái Ngọc Duy <[email-masked]>
> ---
>  revision.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/revision.c b/revision.c
> index 18b7ebb..be1e307 100644
> --- a/revision.c
> +++ b/revision.c
> @@ -1241,9 +1241,9 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
>  		if (strcmp(arg, "--"))
>  			continue;
>  		argv[i] = NULL;
> -		argc = i;
> -		if (argv[i + 1])
> +		if (i + 1 < argc && argv[i + 1])
>  			revs->prune_data = get_pathspec(revs->prefix, argv + i + 1);
> +		argc = i;
>  		seen_dashdash = 1;
>  		break;
>  	}

Why is this necessary? I'd expect that argv arrays have NULL at the end.
If this is a bug, why did noboy notice this earlier? IOW, your commit
message is really lacking justification.

-- Hannes