Commit a5e85d86 by Russell Belfer

Merge pull request #1046 from libgit2/empty-remote-url-crash

Bail out of remote loading if the URL would be NULL
parents 065be7a1 c1cd036e
......@@ -131,6 +131,12 @@ int git_remote_load(git_remote **out, git_repository *repo, const char *name)
if ((error = git_config_get_string(&val, config, git_buf_cstr(&buf))) < 0)
goto cleanup;
if (!val) {
giterr_set(GITERR_INVALID, "Malformed remote '%s' - missing URL", name);
error = -1;
goto cleanup;
}
remote->repo = repo;
remote->url = git__strdup(val);
......
......@@ -183,13 +183,13 @@ void test_network_remotes__list(void)
git_config *cfg;
cl_git_pass(git_remote_list(&list, _repo));
cl_assert(list.count == 3);
cl_assert(list.count == 4);
git_strarray_free(&list);
cl_git_pass(git_repository_config(&cfg, _repo));
cl_git_pass(git_config_set_string(cfg, "remote.specless.url", "http://example.com"));
cl_git_pass(git_remote_list(&list, _repo));
cl_assert(list.count == 4);
cl_assert(list.count == 5);
git_strarray_free(&list);
git_config_free(cfg);
......@@ -269,3 +269,11 @@ void test_network_remotes__tagopt(void)
git_config_free(cfg);
}
void test_network_remotes__cannot_load_with_an_empty_url(void)
{
git_remote *remote;
cl_git_fail(git_remote_load(&remote, _repo, "empty-remote-url"));
cl_assert(giterr_last()->klass == GITERR_INVALID);
}
......@@ -8,6 +8,8 @@
fetch = +refs/heads/*:refs/remotes/test/*
[remote "joshaber"]
url = git://github.com/libgit2/libgit2
[remote "empty-remote-url"]
url =
[remote "test_with_pushurl"]
url = git://github.com/libgit2/fetchlibgit2
......
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