Skip to content
This repository was archived by the owner on Nov 9, 2017. It is now read-only.

Commit c7b3173

Browse files
committed
Merge branch 'ds/rev-parse-required-args' into maint
"git rev-parse" was loose in rejecting command line arguments that do not make sense, e.g. "--default" without the required value for that option. * ds/rev-parse-required-args: rev-parse: check i before using argv[i] against argc
2 parents 6f01667 + a43219f commit c7b3173

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

builtin/rev-parse.c

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -547,15 +547,17 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
547547
continue;
548548
}
549549
if (!strcmp(arg, "--default")) {
550-
def = argv[i+1];
551-
i++;
550+
def = argv[++i];
551+
if (!def)
552+
die("--default requires an argument");
552553
continue;
553554
}
554555
if (!strcmp(arg, "--prefix")) {
555-
prefix = argv[i+1];
556+
prefix = argv[++i];
557+
if (!prefix)
558+
die("--prefix requires an argument");
556559
startup_info->prefix = prefix;
557560
output_prefix = 1;
558-
i++;
559561
continue;
560562
}
561563
if (!strcmp(arg, "--revs-only")) {
@@ -738,9 +740,12 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
738740
continue;
739741
}
740742
if (!strcmp(arg, "--resolve-git-dir")) {
741-
const char *gitdir = resolve_gitdir(argv[i+1]);
743+
const char *gitdir = argv[++i];
742744
if (!gitdir)
743-
die("not a gitdir '%s'", argv[i+1]);
745+
die("--resolve-git-dir requires an argument");
746+
gitdir = resolve_gitdir(gitdir);
747+
if (!gitdir)
748+
die("not a gitdir '%s'", argv[i]);
744749
puts(gitdir);
745750
continue;
746751
}

0 commit comments

Comments
 (0)