[PATCH] read-cache.c: free cache entry when refreshing fails
From: Stefan Beller <hidden>
Date: 2016-06-15 23:03:50
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Stefan Beller <hidden>
Date: 2016-06-15 23:03:50
Subsystem:
the rest · Maintainer:
Linus Torvalds
This fixes a memory leak, when building the cache entries as refresh_cache_entry may decide to return NULL in case of I am not sure how severe this memory leak is as it was found by scan.coverity.com, CID 290041. Signed-off-by: Stefan Beller <redacted> --- read-cache.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/read-cache.c b/read-cache.c
index 9cff715..8d71860 100644
--- a/read-cache.c
+++ b/read-cache.c@@ -725,7 +725,7 @@ struct cache_entry *make_cache_entry(unsigned int mode, unsigned int refresh_options) { int size, len; - struct cache_entry *ce; + struct cache_entry *ce, *ret; if (!verify_path(path)) { error("Invalid path '%s'", path);
@@ -742,7 +742,13 @@ struct cache_entry *make_cache_entry(unsigned int mode, ce->ce_namelen = len; ce->ce_mode = create_ce_mode(mode); - return refresh_cache_entry(ce, refresh_options); + ret = refresh_cache_entry(ce, refresh_options); + if (!ret) { + free(ce); + return NULL; + } else { + return ret; + } } int ce_same_name(const struct cache_entry *a, const struct cache_entry *b)
--
2.3.0.81.gc37f363