diff options
author | Jay Soffian <jaysoffian@gmail.com> | 2010-02-08 22:48:13 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-02-08 21:52:44 -0800 |
commit | 92f9e273e86d505e4c2a28bc053eb514ca2cc552 (patch) | |
tree | 91170fd1acacb90306c8acb2f87f4750c877f217 | |
parent | Merge branch 'sb/maint-octopus' into maint-1.6.5 (diff) | |
download | tgif-92f9e273e86d505e4c2a28bc053eb514ca2cc552.tar.xz |
blame: prevent a segv when -L given start > EOF
blame would segv if given -L <lineno> with <lineno> past the end of the file.
While we're fixing the bug, add test cases for an invalid <start> when called
as -L <start>,<end> or -L<start>.
Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin-blame.c | 2 | ||||
-rwxr-xr-x | t/t8003-blame.sh | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/builtin-blame.c b/builtin-blame.c index 98e818ce6a..4094f3c061 100644 --- a/builtin-blame.c +++ b/builtin-blame.c @@ -2432,7 +2432,7 @@ parse_done: if (top < 1) top = lno; bottom--; - if (lno < top) + if (lno < top || lno < bottom) die("file %s has only %lu lines", path, lno); ent = xcalloc(1, sizeof(*ent)); diff --git a/t/t8003-blame.sh b/t/t8003-blame.sh index ad834f200a..4a8db74f7e 100755 --- a/t/t8003-blame.sh +++ b/t/t8003-blame.sh @@ -157,4 +157,12 @@ EOF git --no-pager blame $COMMIT -- uno >/dev/null ' +test_expect_success 'blame -L with invalid start' ' + test_must_fail git blame -L5 tres 2>&1 | grep "has only 2 lines" +' + +test_expect_success 'blame -L with invalid end' ' + git blame -L1,5 tres 2>&1 | grep "has only 2 lines" +' + test_done |