git-blame: prevent argument parsing segfault

The 3rd branch in builtin-blame.c should also check for lacking
arguments.  Running that in top dir does not trigger the problem
because the 'prefix' is NULL.

Signed-off-by: Tommi Kyntola <tommi.kyntola@ray.fi>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Tommi Kyntola
2007-02-16 10:50:58 +02:00
committed by Junio C Hamano
parent de6f0def50
commit f44213258d

View File

@ -2200,6 +2200,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
if (!strcmp(argv[j], "--")) if (!strcmp(argv[j], "--"))
seen_dashdash = j; seen_dashdash = j;
if (seen_dashdash) { if (seen_dashdash) {
/* (2) */
if (seen_dashdash + 1 != argc - 1) if (seen_dashdash + 1 != argc - 1)
usage(blame_usage); usage(blame_usage);
path = add_prefix(prefix, argv[seen_dashdash + 1]); path = add_prefix(prefix, argv[seen_dashdash + 1]);
@ -2208,6 +2209,8 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
} }
else { else {
/* (3) */ /* (3) */
if (argc <= i)
usage(blame_usage);
path = add_prefix(prefix, argv[i]); path = add_prefix(prefix, argv[i]);
if (i + 1 == argc - 1) { if (i + 1 == argc - 1) {
final_commit_name = argv[i + 1]; final_commit_name = argv[i + 1];