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>
This commit is contained in:

committed by
Junio C Hamano

parent
2f633f41d6
commit
f3738c1ce9
2
refs.c
2
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)
|
static inline int bad_ref_char(int ch)
|
||||||
{
|
{
|
||||||
if (((unsigned) ch) <= ' ' ||
|
if (((unsigned) ch) <= ' ' || ch == 0x7f ||
|
||||||
ch == '~' || ch == '^' || ch == ':' || ch == '\\')
|
ch == '~' || ch == '^' || ch == ':' || ch == '\\')
|
||||||
return 1;
|
return 1;
|
||||||
/* 2.13 Pattern Matching Notation */
|
/* 2.13 Pattern Matching Notation */
|
||||||
|
@ -30,6 +30,9 @@ invalid_ref 'heads/foo.lock'
|
|||||||
valid_ref 'heads/foo@bar'
|
valid_ref 'heads/foo@bar'
|
||||||
invalid_ref 'heads/v@{ation'
|
invalid_ref 'heads/v@{ation'
|
||||||
invalid_ref 'heads/foo\bar'
|
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}" '
|
test_expect_success "check-ref-format --branch @{-1}" '
|
||||||
T=$(git write-tree) &&
|
T=$(git write-tree) &&
|
||||||
|
Reference in New Issue
Block a user