Skip to content

Commit

Permalink
Fix parsing numeric color values
Browse files Browse the repository at this point in the history
Numeric color only worked if it was at end of line.
Noticed by Chris Larson <[email protected]>.

Signed-off-by: Timo Hirvonen <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
tihirvon authored and gitster committed Feb 6, 2008
1 parent f1c3239 commit a0cf49c
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 1 deletion.
2 changes: 1 addition & 1 deletion color.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ static int parse_color(const char *name, int len)
return i - 1;
}
i = strtol(name, &end, 10);
if (*name && !*end && i >= -1 && i <= 255)
if (end - name == len && i >= -1 && i <= 255)
return i;
return -2;
}
Expand Down
69 changes: 69 additions & 0 deletions t/t4026-color.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/bin/sh
#
# Copyright (c) 2008 Timo Hirvonen
#

test_description='Test diff/status color escape codes'
. ./test-lib.sh

color()
{
git config diff.color.new "$1" &&
test "`git config --get-color diff.color.new`" = "$2"
}

invalid_color()
{
git config diff.color.new "$1" &&
test -z "`git config --get-color diff.color.new 2>/dev/null`"
}

test_expect_success 'reset' '
color "reset" "[m"
'

test_expect_success 'attribute before color name' '
color "bold red" "[1;31m"
'

test_expect_success 'color name before attribute' '
color "red bold" "[1;31m"
'

test_expect_success 'attr fg bg' '
color "ul blue red" "[4;34;41m"
'

test_expect_success 'fg attr bg' '
color "blue ul red" "[4;34;41m"
'

test_expect_success 'fg bg attr' '
color "blue red ul" "[4;34;41m"
'

test_expect_success '256 colors' '
color "254 bold 255" "[1;38;5;254;48;5;255m"
'

test_expect_success 'color too small' '
invalid_color "-2"
'

test_expect_success 'color too big' '
invalid_color "256"
'

test_expect_success 'extra character after color number' '
invalid_color "3X"
'

test_expect_success 'extra character after color name' '
invalid_color "redX"
'

test_expect_success 'extra character after attribute' '
invalid_color "dimX"
'

test_done

0 comments on commit a0cf49c

Please sign in to comment.