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:

committed by
Junio C Hamano

parent
de6f0def50
commit
f44213258d
@ -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];
|
||||||
|
Reference in New Issue
Block a user