summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2017-09-05 09:04:14 -0400
committerJunio C Hamano <gitster@pobox.com>2017-09-06 18:06:26 +0900
commitbaddc96b2cbf66fdcde87509392dc8da6a77f452 (patch)
treeee56f396652711e330338db066b2a3babf3f2b07
parentfe6a01af8aa913fc23c1486251da6f6f08601816 (diff)
downloadgit-baddc96b2cbf66fdcde87509392dc8da6a77f452.tar.gz
update-index: fix cache entry leak in add_one_file()
When we fail to add the cache entry to the index, we end up just leaking the struct. We should follow the pattern of the early-return above and free it. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/update-index.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/builtin/update-index.c b/builtin/update-index.c
index d562f2ec69..d955cd56b3 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -287,8 +287,10 @@ static int add_one_path(const struct cache_entry *old, const char *path, int len
}
option = allow_add ? ADD_CACHE_OK_TO_ADD : 0;
option |= allow_replace ? ADD_CACHE_OK_TO_REPLACE : 0;
- if (add_cache_entry(ce, option))
+ if (add_cache_entry(ce, option)) {
+ free(ce);
return error("%s: cannot add to the index - missing --add option?", path);
+ }
return 0;
}