mirror of
https://git.proxmox.com/git/libgit2
synced 2026-01-03 19:59:33 +00:00
refs: handle ALLOW_ONELEVEL normalization with leading slash
A leading slash confuses the name normalization code when the flags include ALLOW_ONELEVEL. Catch this case in particular to avoid triggering an assertion in the uppercase check which expects us not to pass it an empty string. The existing tests don't catch this as they simply use the NORMAL flag. This fixes #1300.
This commit is contained in:
parent
5f9f69d983
commit
e5ef0f1814
@ -1691,6 +1691,11 @@ int git_reference__normalize_name(
|
||||
segments_count++;
|
||||
}
|
||||
|
||||
/* This means that there's a leading slash in the refname */
|
||||
if (segment_len == 0 && segments_count == 0) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (current[segment_len] == '\0')
|
||||
break;
|
||||
|
||||
|
||||
@ -10,6 +10,8 @@ void test_refs_isvalidname__can_detect_invalid_formats(void)
|
||||
cl_assert_equal_i(false, git_reference_is_valid_name("_NO_LEADING_UNDERSCORE"));
|
||||
cl_assert_equal_i(false, git_reference_is_valid_name("HEAD/aa"));
|
||||
cl_assert_equal_i(false, git_reference_is_valid_name("lower_case"));
|
||||
cl_assert_equal_i(false, git_reference_is_valid_name("/stupid/name/master"));
|
||||
cl_assert_equal_i(false, git_reference_is_valid_name("/"));
|
||||
cl_assert_equal_i(false, git_reference_is_valid_name(""));
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user