Commit b545be3d by Laurence McGlashan

open:fix memory leak when passing NULL to git_repository_open_ext

parent c3a7892f
......@@ -812,8 +812,13 @@ int git_repository_open_ext(
error = find_repo(
&gitdir, &workdir, &gitlink, &commondir, start_path, flags, ceiling_dirs);
if (error < 0 || !repo_ptr)
if (error < 0 || !repo_ptr) {
git_buf_dispose(&gitdir);
git_buf_dispose(&workdir);
git_buf_dispose(&gitlink);
git_buf_dispose(&commondir);
return error;
}
repo = repository_alloc();
GIT_ERROR_CHECK_ALLOC(repo);
......
......@@ -88,6 +88,17 @@ void test_repo_open__open_with_discover(void)
cl_fixture_cleanup("attr");
}
void test_repo_open__check_if_repository(void)
{
cl_git_sandbox_init("empty_standard_repo");
/* Pass NULL for the output parameter to check for but not open the repo */
cl_git_pass(git_repository_open_ext(NULL, "empty_standard_repo", 0, NULL));
cl_git_fail(git_repository_open_ext(NULL, "repo_does_not_exist", 0, NULL));
cl_fixture_cleanup("empty_standard_repo");
}
static void make_gitlink_dir(const char *dir, const char *linktext)
{
git_buf path = GIT_BUF_INIT;
......
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