mirror of
https://git.proxmox.com/git/libgit2
synced 2025-06-20 21:44:55 +00:00
Merge pull request #1247 from sba1/dont-segfault-if-transport-doesnt-support-push
Don't segfault if transport doesn't support push.
This commit is contained in:
commit
c49fa037cc
@ -369,6 +369,12 @@ static int do_push(git_push *push)
|
||||
int error;
|
||||
git_transport *transport = push->remote->transport;
|
||||
|
||||
if (!transport->push) {
|
||||
giterr_set(GITERR_NET, "Remote transport doesn't support push");
|
||||
error = -1;
|
||||
goto on_error;
|
||||
}
|
||||
|
||||
/*
|
||||
* A pack-file MUST be sent if either create or update command
|
||||
* is used, even if the server already has all the necessary
|
||||
|
@ -60,6 +60,27 @@ void test_network_remotes__pushurl(void)
|
||||
cl_assert(git_remote_pushurl(_remote) == NULL);
|
||||
}
|
||||
|
||||
void test_network_remotes__error_when_no_push_available(void)
|
||||
{
|
||||
git_remote *r;
|
||||
git_transport *t;
|
||||
git_push *p;
|
||||
|
||||
cl_git_pass(git_remote_create_inmemory(&r, _repo, NULL, cl_fixture("testrepo.git")));
|
||||
|
||||
cl_git_pass(git_transport_local(&t,r,NULL));
|
||||
|
||||
/* Make sure that push is really not available */
|
||||
t->push = NULL;
|
||||
cl_git_pass(git_remote_connect(r, GIT_DIRECTION_PUSH));
|
||||
cl_git_pass(git_push_new(&p, r));
|
||||
cl_git_pass(git_push_add_refspec(p, "refs/heads/master"));
|
||||
cl_git_fail_with(git_push_finish(p), GIT_ERROR);
|
||||
|
||||
git_push_free(p);
|
||||
git_remote_free(r);
|
||||
}
|
||||
|
||||
void test_network_remotes__parsing_ssh_remote(void)
|
||||
{
|
||||
cl_assert( git_remote_valid_url("git@github.com:libgit2/libgit2.git") );
|
||||
|
Loading…
Reference in New Issue
Block a user