diff options
| author | Rémi Duraffort <ivoire@videolan.org> | 2013-07-15 15:59:35 +0200 |
|---|---|---|
| committer | Rémi Duraffort <ivoire@videolan.org> | 2013-07-15 16:29:09 +0200 |
| commit | 8d6ef4bf78cc5d3a3cb277ecc4fcf0fdcdbc9f20 (patch) | |
| tree | f1212f84f461e519b76c2681460f3144532a4f31 /src | |
| parent | 9146f1e57ec4f2b6fa293c78d54f1383464ff5be (diff) | |
| download | libgit2-8d6ef4bf78cc5d3a3cb277ecc4fcf0fdcdbc9f20.tar.gz | |
index: fix potential memory leaks
Diffstat (limited to 'src')
| -rw-r--r-- | src/index.c | 12 | ||||
| -rw-r--r-- | src/indexer.c | 2 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/index.c b/src/index.c index bd5e192f3..0610eb5b9 100644 --- a/src/index.c +++ b/src/index.c @@ -1409,14 +1409,18 @@ static int read_reuc(git_index *index, const char *buffer, size_t size) if (git__strtol32(&tmp, buffer, &endptr, 8) < 0 || !endptr || endptr == buffer || *endptr || - (unsigned)tmp > UINT_MAX) + (unsigned)tmp > UINT_MAX) { + index_entry_reuc_free(lost); return index_error_invalid("reading reuc entry stage"); + } lost->mode[i] = tmp; len = (endptr + 1) - buffer; - if (size <= len) + if (size <= len) { + index_entry_reuc_free(lost); return index_error_invalid("reading reuc entry stage"); + } size -= len; buffer += len; @@ -1426,8 +1430,10 @@ static int read_reuc(git_index *index, const char *buffer, size_t size) for (i = 0; i < 3; i++) { if (!lost->mode[i]) continue; - if (size < 20) + if (size < 20) { + index_entry_reuc_free(lost); return index_error_invalid("reading reuc entry oid"); + } git_oid_fromraw(&lost->oid[i], (const unsigned char *) buffer); size -= 20; diff --git a/src/indexer.c b/src/indexer.c index 1b638cd8a..09f962934 100644 --- a/src/indexer.c +++ b/src/indexer.c @@ -325,7 +325,7 @@ static int hash_and_save(git_indexer_stream *idx, git_rawobj *obj, git_off_t ent /* FIXME: Parse the object instead of hashing it */ if (git_odb__hashobj(&oid, obj) < 0) { giterr_set(GITERR_INDEXER, "Failed to hash object"); - return -1; + goto on_error; } pentry = git__calloc(1, sizeof(struct git_pack_entry)); |
