Re: [PATCH] rev-parse: Check argc before using argv[i+1]

2014-01-28 Thread Junio C Hamano
David Sharp dhsh...@google.com writes:

 @@ -738,9 +740,11 @@ 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]);
 + if (++i = argc)
 + die(--resolve-git-dir requires an 
 argument);
 + const char *gitdir = resolve_gitdir(argv[i]);
   if (!gitdir)
 - die(not a gitdir '%s', argv[i+1]);
 + die(not a gitdir '%s', argv[i]);

This adds decl-after-statement.  As referencing argv[argc] is not a
crime (you will grab a NULL), how about doing it this way to see if
the value is a NULL, instead of comparing the index and argc?

const char *gitdir;
if (!argv[++i])
die(--resolve-git-dir requires an argument);
gitdir = resolve_gitdir(argv[i]);
if (!gitdir)
die(not a gitdir '%s', argv[i]);

Same comment may apply to other hunks.

Thanks.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] rev-parse: Check argc before using argv[i+1]

2014-01-28 Thread David Sharp
On Tue, Jan 28, 2014 at 11:12 AM, Junio C Hamano gits...@pobox.com wrote:
 David Sharp dhsh...@google.com writes:

 @@ -738,9 +740,11 @@ 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]);
 + if (++i = argc)
 + die(--resolve-git-dir requires an 
 argument);
 + const char *gitdir = resolve_gitdir(argv[i]);
   if (!gitdir)
 - die(not a gitdir '%s', argv[i+1]);
 + die(not a gitdir '%s', argv[i]);

 This adds decl-after-statement.

Sorry, I wasn't aware that git is trying to conform to C90. (It's not
compiled with -std=c90, -ansi or -Wdeclaration-after-statement.)

 As referencing argv[argc] is not a
 crime (you will grab a NULL), how about doing it this way to see if
 the value is a NULL, instead of comparing the index and argc?

I'm not convinced this is any better, but alright. I did something
slightly different based on that, though.

v2 patch incoming...


 const char *gitdir;
 if (!argv[++i])
 die(--resolve-git-dir requires an argument);
 gitdir = resolve_gitdir(argv[i]);
 if (!gitdir)
 die(not a gitdir '%s', argv[i]);

 Same comment may apply to other hunks.

 Thanks.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html