diff options
| author | Sascha Cunz <Sascha@BabbelBox.org> | 2012-11-18 09:07:35 +0100 |
|---|---|---|
| committer | Sascha Cunz <Sascha@BabbelBox.org> | 2012-11-18 09:07:35 +0100 |
| commit | 4cc7342e952b75d5f77427cb83b413e9e195ed28 (patch) | |
| tree | 9af91d91d59a1e65f42906b42cb11bde35a22760 /src/indexer.c | |
| parent | 0066955d9752cab8f8533c0dddfc95d08ad13e33 (diff) | |
| download | libgit2-4cc7342e952b75d5f77427cb83b413e9e195ed28.tar.gz | |
Indexer: Avoid a possible double-deletion in error case
Diffstat (limited to 'src/indexer.c')
| -rw-r--r-- | src/indexer.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/indexer.c b/src/indexer.c index 4a4ed325a..e9f235a72 100644 --- a/src/indexer.c +++ b/src/indexer.c @@ -249,8 +249,10 @@ static int hash_and_save(git_indexer_stream *idx, git_rawobj *obj, git_off_t ent git_oid_cpy(&pentry->sha1, &oid); pentry->offset = entry_start; - if (git_vector_insert(&idx->pack->cache, pentry) < 0) + if (git_vector_insert(&idx->pack->cache, pentry) < 0) { + git__free(pentry); goto on_error; + } git_oid_cpy(&entry->oid, &oid); entry->crc = crc32(0L, Z_NULL, 0); @@ -275,7 +277,6 @@ static int hash_and_save(git_indexer_stream *idx, git_rawobj *obj, git_off_t ent on_error: git__free(entry); - git__free(pentry); git__free(obj->data); return -1; } |
