Re: [PATCH] rev-parse: fix --resolve-git-dir argument handling
John Keeping <john@keeping.me.uk> writes:
Show 11 quoted lines
> There are two problems here:
>
> 1) If no argument is provided, then the command segfaults
> 2) The argument is not consumed, so there will be excess output
>
> Fix both of these in one go by restructuring the handler for this
> option.
>
> Reported-by: Daniel Hahler <genml+git-2014@thequod.de>
> Signed-off-by: John Keeping <john@keeping.me.uk>
> ---
Show 22 quoted lines
> builtin/rev-parse.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
> index aaeb611..645cc4a 100644
> --- a/builtin/rev-parse.c
> +++ b/builtin/rev-parse.c
> @@ -738,9 +738,12 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
> continue;
> }
> if (!strcmp(arg, "--resolve-git-dir")) {
> - const char *gitdir = resolve_gitdir(argv[i+1]);
> + const char *gitdir;
> + if (++i >= argc)
> + die("--resolve-git-dir requires an argument");
> + gitdir = resolve_gitdir(argv[i]);
> if (!gitdir)
> - die("not a gitdir '%s'", argv[i+1]);
> + die("not a gitdir '%s'", argv[i]);
> puts(gitdir);
> continue;
> }