summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Haggerty <mhagger@alum.mit.edu>2011-08-27 06:12:44 +0200
committerJunio C Hamano <gitster@pobox.com>2011-08-27 11:47:49 -0700
commitf3738c1ce9193a4bf45ba1a3ea67d0cf32da0257 (patch)
treeff76b2cc8cca0320d66b4e6b425baa1d7117fcba
parent2f633f41d69527cdd9ff5b8e04a752f1774fc3df (diff)
downloadgit-f3738c1ce9193a4bf45ba1a3ea67d0cf32da0257.tar.gz
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 <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--refs.c2
-rwxr-xr-xt/t1402-check-ref-format.sh3
2 files changed, 4 insertions, 1 deletions
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) &&