diff options
| author | Vicent Martà <vicent@github.com> | 2012-11-18 14:15:04 -0800 | 
|---|---|---|
| committer | Vicent Martà <vicent@github.com> | 2012-11-18 14:15:04 -0800 | 
| commit | 629c08293051e9828f2ca3517d2659728647c2cd (patch) | |
| tree | 9af91d91d59a1e65f42906b42cb11bde35a22760 /src | |
| parent | 0066955d9752cab8f8533c0dddfc95d08ad13e33 (diff) | |
| parent | 4cc7342e952b75d5f77427cb83b413e9e195ed28 (diff) | |
| download | libgit2-629c08293051e9828f2ca3517d2659728647c2cd.tar.gz | |
Merge pull request #1082 from scunz/fixDoubleDeleteOnError
Indexer: Avoid a possible double-deletion in error case
Diffstat (limited to 'src')
| -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;  }  | 
