author | Junio C Hamano <gitster@pobox.com> | |
Sat, 18 Apr 2009 04:20:58 +0000 (21:20 -0700) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Sat, 18 Apr 2009 04:20:58 +0000 (21:20 -0700) |
* maint-1.6.1:
Fix buffer overflow in config parser
Fix buffer overflow in config parser
config.c | patch | blob | history | |
t/t1303-wacky-config.sh | patch | blob | history |
diff --git a/config.c b/config.c
index 0c8c76f13b03028ad400b1c5b72b3cf0a7ec0940..7a83c76f4b0480416b01213c0aca30b1e92556d2 100644 (file)
--- a/config.c
+++ b/config.c
for (;;) {
int c = get_next_char();
- if (len >= sizeof(value))
+ if (len >= sizeof(value) - 1)
return NULL;
if (c == '\n') {
if (quote)
index 1983076c753ea12a4f69d2a98eda3c1621daed59..080117c6bcbb61078539f36011ecd62780bae305 100755 (executable)
--- a/t/t1303-wacky-config.sh
+++ b/t/t1303-wacky-config.sh
check() {
echo "$2" >expected
- git config --get "$1" >actual
+ git config --get "$1" >actual 2>&1
test_cmp actual expected
}
check "$SECTION" bar
'
+LONG_VALUE=$(printf "x%01021dx a" 7)
+test_expect_success 'do not crash on special long config line' '
+ setup &&
+ git config section.key "$LONG_VALUE" &&
+ check section.key "fatal: bad config file line 2 in .git/config"
+'
+
test_done