summaryrefslogtreecommitdiffstats
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 20:47:49 +0200
commitf3738c1ce9193a4bf45ba1a3ea67d0cf32da0257 (patch)
treeff76b2cc8cca0320d66b4e6b425baa1d7117fcba
parentcheck-ref-format --print: Normalize refnames that start with slashes (diff)
downloadgit-f3738c1ce9193a4bf45ba1a3ea67d0cf32da0257.tar.xz
git-f3738c1ce9193a4bf45ba1a3ea67d0cf32da0257.zip
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>
Diffstat (limited to '')
-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) &&