diff --git a/src/libgit2/refs.c b/src/libgit2/refs.c index e01278521..fd0c292ff 100644 --- a/src/libgit2/refs.c +++ b/src/libgit2/refs.c @@ -819,7 +819,7 @@ int git_reference_list( static int is_valid_ref_char(char ch) { - if ((unsigned) ch <= ' ') + if ((unsigned) ch <= ' ' || ch == '\177') /* ASCII control characters */ return 0; switch (ch) { diff --git a/tests/libgit2/refs/isvalidname.c b/tests/libgit2/refs/isvalidname.c index 063f0f798..2e20c67bd 100644 --- a/tests/libgit2/refs/isvalidname.c +++ b/tests/libgit2/refs/isvalidname.c @@ -21,6 +21,7 @@ void test_refs_isvalidname__can_detect_invalid_formats(void) cl_assert_equal_i(false, is_valid_name("/")); cl_assert_equal_i(false, is_valid_name("//")); cl_assert_equal_i(false, is_valid_name("")); + cl_assert_equal_i(false, is_valid_name("refs/heads/\177")); cl_assert_equal_i(false, is_valid_name("refs/heads/sub.lock/webmatrix")); }