Commit 7c9f5bec by Carlos Martín Nieto

futils: return GIT_ENOTFOUND when trying to read a directory

This lets the reference code return not-found when the user asks to
look up a reference when in fact they pass a namespace.
parent 51a5e133
...@@ -165,7 +165,13 @@ int git_futils_readbuffer_updated( ...@@ -165,7 +165,13 @@ int git_futils_readbuffer_updated(
return -1; return -1;
} }
if (S_ISDIR(st.st_mode) || !git__is_sizet(st.st_size+1)) {
if (S_ISDIR(st.st_mode)) {
giterr_set(GITERR_INVALID, "requested file is a directory");
return GIT_ENOTFOUND;
}
if (!git__is_sizet(st.st_size+1)) {
giterr_set(GITERR_OS, "Invalid regular file stat for '%s'", path); giterr_set(GITERR_OS, "Invalid regular file stat for '%s'", path);
return -1; return -1;
} }
......
...@@ -46,3 +46,15 @@ void test_refs_lookup__oid(void) ...@@ -46,3 +46,15 @@ void test_refs_lookup__oid(void)
cl_git_pass(git_oid_fromstr(&expected, "1385f264afb75a56a5bec74243be9b367ba4ca08")); cl_git_pass(git_oid_fromstr(&expected, "1385f264afb75a56a5bec74243be9b367ba4ca08"));
cl_assert(git_oid_cmp(&tag, &expected) == 0); cl_assert(git_oid_cmp(&tag, &expected) == 0);
} }
void test_refs_lookup__namespace(void)
{
int error;
git_reference *ref;
error = git_reference_lookup(&ref, g_repo, "refs/heads");
cl_assert_equal_i(error, GIT_ENOTFOUND);
error = git_reference_lookup(&ref, g_repo, "refs/heads/");
cl_assert_equal_i(error, GIT_EINVALIDSPEC);
}
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