summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlos@cmartin.tk>2012-07-23 21:22:53 +0200
committerCarlos Martín Nieto <carlos@cmartin.tk>2012-07-23 21:32:45 +0200
commit279b45b05b05e0dfc496701c4d22e5ea601d0ebf (patch)
tree226b7c72024196fae9d2c29806c3abd99093e01a
parent14e1bc157a06d4513ce4193e6100a338432b3c88 (diff)
downloadlibgit2-279b45b05b05e0dfc496701c4d22e5ea601d0ebf.tar.gz
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.
-rw-r--r--src/revparse.c6
-rw-r--r--tests-clar/refs/revparse.c3
2 files changed, 5 insertions, 4 deletions
diff --git a/src/revparse.c b/src/revparse.c
index 6cfea0ca8..650d7a904 100644
--- a/src/revparse.c
+++ b/src/revparse.c
@@ -705,7 +705,7 @@ int git_revparse_single(git_object **out, git_repository *repo, const char *spec
*out = NULL;
- do {
+ while (spec[pos]) {
switch (spec[pos]) {
case '^':
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++;
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;
*out = base_rev;
diff --git a/tests-clar/refs/revparse.c b/tests-clar/refs/revparse.c
index 05a95652a..02acb8844 100644
--- a/tests-clar/refs/revparse.c
+++ b/tests-clar/refs/revparse.c
@@ -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^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, ""));
+
}
void test_refs_revparse__shas(void)
@@ -74,7 +76,6 @@ void test_refs_revparse__shas(void)
void test_refs_revparse__head(void)
{
- test_object("", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
test_object("HEAD", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
test_object("HEAD^0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
test_object("HEAD~0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");