revparse: don't allow an empty string

Asking the library for "" used to give HEAD, but that's trying to
impose a default at the wrong layer. Make it fail.
This commit is contained in:
Carlos Martín Nieto 2012-07-23 21:22:53 +02:00
parent 14e1bc157a
commit 279b45b05b
2 changed files with 5 additions and 4 deletions

View File

@ -705,7 +705,7 @@ int git_revparse_single(git_object **out, git_repository *repo, const char *spec
*out = NULL; *out = NULL;
do { while (spec[pos]) {
switch (spec[pos]) { switch (spec[pos]) {
case '^': case '^':
if ((error = ensure_base_rev_loaded(&base_rev, &reference, spec, identifier_len, repo, false)) < 0) if ((error = ensure_base_rev_loaded(&base_rev, &reference, spec, identifier_len, repo, false)) < 0)
@ -813,9 +813,9 @@ int git_revparse_single(git_object **out, git_repository *repo, const char *spec
pos++; pos++;
identifier_len++; identifier_len++;
} }
} while (spec[pos]); }
if ((error = ensure_base_rev_loaded(&base_rev, &reference, spec, identifier_len, repo, true)) < 0) if ((error = ensure_base_rev_loaded(&base_rev, &reference, spec, identifier_len, repo, false)) < 0)
goto cleanup; goto cleanup;
*out = base_rev; *out = base_rev;

View File

@ -64,6 +64,8 @@ void test_refs_revparse__invalid_reference_name(void)
cl_git_fail(git_revparse_single(&g_obj, g_repo, "this doesn't make sense")); cl_git_fail(git_revparse_single(&g_obj, g_repo, "this doesn't make sense"));
cl_git_fail(git_revparse_single(&g_obj, g_repo, "this doesn't make sense^1")); cl_git_fail(git_revparse_single(&g_obj, g_repo, "this doesn't make sense^1"));
cl_git_fail(git_revparse_single(&g_obj, g_repo, "this doesn't make sense~2")); cl_git_fail(git_revparse_single(&g_obj, g_repo, "this doesn't make sense~2"));
cl_git_fail(git_revparse_single(&g_obj, g_repo, ""));
} }
void test_refs_revparse__shas(void) void test_refs_revparse__shas(void)
@ -74,7 +76,6 @@ void test_refs_revparse__shas(void)
void test_refs_revparse__head(void) void test_refs_revparse__head(void)
{ {
test_object("", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
test_object("HEAD", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750"); test_object("HEAD", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
test_object("HEAD^0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750"); test_object("HEAD^0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
test_object("HEAD~0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750"); test_object("HEAD~0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");