diff options
author | Carlos Martín Nieto <carlos@cmartin.tk> | 2011-10-06 00:51:32 +0200 |
---|---|---|
committer | Vicent Marti <tanoku@gmail.com> | 2011-10-12 21:33:19 +0200 |
commit | 8c2528748d6e0671a61ce729318a9f4e44f51111 (patch) | |
tree | f0f34071c0b8a846fcaed6d5d2f73da056558970 /src | |
parent | 546a3c8f9e87c632ea1bc44c32457ec7adee0741 (diff) | |
download | libgit2-8c2528748d6e0671a61ce729318a9f4e44f51111.tar.gz |
net: plug a few memory leaks
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
Diffstat (limited to 'src')
-rw-r--r-- | src/transport-http.c | 16 | ||||
-rw-r--r-- | src/transport_git.c | 3 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/transport-http.c b/src/transport-http.c index 13a95dbc5..3426b34e1 100644 --- a/src/transport-http.c +++ b/src/transport-http.c @@ -389,15 +389,20 @@ static int on_body_parse_response(http_parser *parser, const char *str, size_t l git_buf_consume(buf, line_end); if (pkt->type == GIT_PKT_PACK) { + free(pkt); t->pack_ready = 1; return 0; } - if (pkt->type == GIT_PKT_NAK) + if (pkt->type == GIT_PKT_NAK) { + free(pkt); return 0; + } - if (pkt->type != GIT_PKT_ACK) + if (pkt->type != GIT_PKT_ACK) { + free(pkt); continue; + } error = git_vector_insert(common, pkt); if (error < GIT_SUCCESS) @@ -596,6 +601,8 @@ static int http_negotiate_fetch(git_transport *transport, git_repository *repo, } while(1); cleanup: + git_buf_free(&request); + git_buf_free(&data); git_revwalk_free(walk); return error; } @@ -722,6 +729,7 @@ static void http_free(git_transport *transport) { transport_http *t = (transport_http *) transport; git_vector *refs = &t->refs; + git_vector *common = &t->common; unsigned int i; git_pkt *p; @@ -737,6 +745,10 @@ static void http_free(git_transport *transport) git_pkt_free(p); } git_vector_free(refs); + git_vector_foreach(common, i, p) { + git_pkt_free(p); + } + git_vector_free(common); git_buf_free(&t->buf); free(t->heads); free(t->content_type); diff --git a/src/transport_git.c b/src/transport_git.c index 7b65936a5..489807851 100644 --- a/src/transport_git.c +++ b/src/transport_git.c @@ -357,9 +357,11 @@ static int git_negotiate_fetch(git_transport *transport, git_repository *repo, g gitno_consume(buf, line_end); if (pkt->type == GIT_PKT_ACK) { + free(pkt); error = GIT_SUCCESS; goto done; } else if (pkt->type == GIT_PKT_NAK) { + free(pkt); break; } else { error = git__throw(GIT_ERROR, "Got unexpected pkt type"); @@ -422,6 +424,7 @@ static int git_download_pack(char **out, git_transport *transport, git_repositor return error; if (pkt->type == GIT_PKT_PACK) { + free(pkt); return git_fetch__download_pack(out, buf->data, buf->offset, t->socket, repo); } |