mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-12 15:29:38 +00:00
transports: smart_pkt: fix memory leaks on error paths
This commit is contained in:
parent
793e085536
commit
003c5e46a8
@ -296,13 +296,12 @@ static int ng_pkt(git_pkt **out, const char *line, size_t len)
|
|||||||
pkt = git__malloc(sizeof(*pkt));
|
pkt = git__malloc(sizeof(*pkt));
|
||||||
GITERR_CHECK_ALLOC(pkt);
|
GITERR_CHECK_ALLOC(pkt);
|
||||||
|
|
||||||
|
pkt->ref = NULL;
|
||||||
pkt->type = GIT_PKT_NG;
|
pkt->type = GIT_PKT_NG;
|
||||||
|
|
||||||
line += 3; /* skip "ng " */
|
line += 3; /* skip "ng " */
|
||||||
if (!(ptr = strchr(line, ' '))) {
|
if (!(ptr = strchr(line, ' ')))
|
||||||
giterr_set(GITERR_NET, "Invalid packet line");
|
goto out_err;
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
len = ptr - line;
|
len = ptr - line;
|
||||||
|
|
||||||
GITERR_CHECK_ALLOC_ADD(&alloclen, len, 1);
|
GITERR_CHECK_ALLOC_ADD(&alloclen, len, 1);
|
||||||
@ -313,12 +312,8 @@ static int ng_pkt(git_pkt **out, const char *line, size_t len)
|
|||||||
pkt->ref[len] = '\0';
|
pkt->ref[len] = '\0';
|
||||||
|
|
||||||
line = ptr + 1;
|
line = ptr + 1;
|
||||||
if (!(ptr = strchr(line, '\n'))) {
|
if (!(ptr = strchr(line, '\n')))
|
||||||
giterr_set(GITERR_NET, "Invalid packet line");
|
goto out_err;
|
||||||
git__free(pkt->ref);
|
|
||||||
git__free(pkt);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
len = ptr - line;
|
len = ptr - line;
|
||||||
|
|
||||||
GITERR_CHECK_ALLOC_ADD(&alloclen, len, 1);
|
GITERR_CHECK_ALLOC_ADD(&alloclen, len, 1);
|
||||||
@ -330,6 +325,12 @@ static int ng_pkt(git_pkt **out, const char *line, size_t len)
|
|||||||
|
|
||||||
*out = (git_pkt *)pkt;
|
*out = (git_pkt *)pkt;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
out_err:
|
||||||
|
giterr_set(GITERR_NET, "Invalid packet line");
|
||||||
|
git__free(pkt->ref);
|
||||||
|
git__free(pkt);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int unpack_pkt(git_pkt **out, const char *line, size_t len)
|
static int unpack_pkt(git_pkt **out, const char *line, size_t len)
|
||||||
|
Loading…
Reference in New Issue
Block a user