summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Martí <vicent@github.com>2013-03-07 07:47:20 -0800
committerVicent Martí <vicent@github.com>2013-03-07 07:47:20 -0800
commit6a9ef012376e8a21dcfd0499ab16048eb6e954c3 (patch)
treee501f5be5296ce8d894e69867eb511a6be81fa27
parent9952f24e6cc71ef5ecd13831f783e308aae97c36 (diff)
parentbb45c57f94d3c7c96e78234e2a81393c0ced45a0 (diff)
downloadlibgit2-6a9ef012376e8a21dcfd0499ab16048eb6e954c3.tar.gz
Merge pull request #1401 from carlosmn/leading-slash
refs: explicitly catch leading slashes
-rw-r--r--src/refs.c3
-rw-r--r--tests-clar/refs/lookup.c6
2 files changed, 9 insertions, 0 deletions
diff --git a/src/refs.c b/src/refs.c
index 113cadad5..dd3dd64b1 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -1667,6 +1667,9 @@ int git_reference__normalize_name(
process_flags = flags;
current = (char *)name;
+ if (*current == '/')
+ goto cleanup;
+
if (normalize)
git_buf_clear(buf);
diff --git a/tests-clar/refs/lookup.c b/tests-clar/refs/lookup.c
index 11fd68f90..0dbebc5c2 100644
--- a/tests-clar/refs/lookup.c
+++ b/tests-clar/refs/lookup.c
@@ -32,6 +32,12 @@ void test_refs_lookup__with_resolve(void)
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)
{
git_oid tag, expected;