Commit bb45c57f by Carlos Martín Nieto

refs: explicitly catch leading slashes

It's somewhat common to try to write "/refs/tags/something". There is
no easy way to catch it during the main body of the function, as there
is no way to distinguish whether it's a leading slash or a double
slash somewhere in the middle.

Catch this at the beginning so we don't trigger the assert in
is_all_caps_and_underscore().
parent 9952f24e
...@@ -1667,6 +1667,9 @@ int git_reference__normalize_name( ...@@ -1667,6 +1667,9 @@ int git_reference__normalize_name(
process_flags = flags; process_flags = flags;
current = (char *)name; current = (char *)name;
if (*current == '/')
goto cleanup;
if (normalize) if (normalize)
git_buf_clear(buf); git_buf_clear(buf);
......
...@@ -32,6 +32,12 @@ void test_refs_lookup__with_resolve(void) ...@@ -32,6 +32,12 @@ void test_refs_lookup__with_resolve(void)
git_reference_free(a); git_reference_free(a);
} }
void test_refs_lookup__invalid_name(void)
{
git_oid oid;
cl_git_fail(git_reference_name_to_id(&oid, g_repo, "/refs/tags/point_to_blob"));
}
void test_refs_lookup__oid(void) void test_refs_lookup__oid(void)
{ {
git_oid tag, expected; git_oid tag, expected;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment