From: Michael Haggerty Date: Sat, 27 Aug 2011 04:12:44 +0000 (+0200) Subject: Forbid DEL characters in reference names X-Git-Tag: v1.7.7-rc1~9^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f3738c1ce9193a4bf45ba1a3ea67d0cf32da0257;p=thirdparty%2Fgit.git Forbid DEL characters in reference names DEL is an ASCII control character and therefore should not be permitted in reference names. Add tests for this and other unusual characters. Signed-off-by: Michael Haggerty Signed-off-by: Junio C Hamano --- diff --git a/refs.c b/refs.c index e3c05110e5..6f471d42c3 100644 --- a/refs.c +++ b/refs.c @@ -837,7 +837,7 @@ int for_each_rawref(each_ref_fn fn, void *cb_data) static inline int bad_ref_char(int ch) { - if (((unsigned) ch) <= ' ' || + if (((unsigned) ch) <= ' ' || ch == 0x7f || ch == '~' || ch == '^' || ch == ':' || ch == '\\') return 1; /* 2.13 Pattern Matching Notation */ diff --git a/t/t1402-check-ref-format.sh b/t/t1402-check-ref-format.sh index 7563043c53..ed4275afe3 100755 --- a/t/t1402-check-ref-format.sh +++ b/t/t1402-check-ref-format.sh @@ -30,6 +30,9 @@ invalid_ref 'heads/foo.lock' valid_ref 'heads/foo@bar' invalid_ref 'heads/v@{ation' invalid_ref 'heads/foo\bar' +invalid_ref "$(printf 'heads/foo\t')" +invalid_ref "$(printf 'heads/foo\177')" +valid_ref "$(printf 'heads/fu\303\237')" test_expect_success "check-ref-format --branch @{-1}" ' T=$(git write-tree) &&