Browse Source

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>
maint
Michael Haggerty 14 years ago committed by Junio C Hamano
parent
commit
f3738c1ce9
  1. 2
      refs.c
  2. 3
      t/t1402-check-ref-format.sh

2
refs.c

@ -837,7 +837,7 @@ int for_each_rawref(each_ref_fn fn, void *cb_data) @@ -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 */

3
t/t1402-check-ref-format.sh

@ -30,6 +30,9 @@ invalid_ref 'heads/foo.lock' @@ -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) &&

Loading…
Cancel
Save