From: Junio C Hamano Date: Tue, 18 Feb 2014 20:42:02 GMT Subject: Re: [PATCH] rev-parse: fix --resolve-git-dir argument handling Message-ID: In-Reply-To: <65ea2c8ce4f0d60f0d93f730aac50183ba63bd1c.1392626780.git.john@keeping.me.uk> John Keeping writes: > 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 > Signed-off-by: John Keeping > --- Looks sensible; thanks. > 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; > }