[PATCH/RFC 2/3] write-tree: Avoid leak when index refers to an invalid object
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Aug 10, 2010, 03:32 UTC
- Message-ID
- <20100810033211.GC2386@burratino>
- In-Reply-To
- <20100810032647.GA2386@burratino>
Noticed by valgrind during test t0000.35 “writing this tree without --missing-ok”.
Even in the cherry-pick foo..bar code path, such an error is the end of the line. But maybe some day an interactive porcelain will want to link to libgit, making this matter.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> --- cache-tree.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/cache-tree.c b/cache-tree.c index d917437..c60cf91 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -328,9 +328,11 @@ static int update_one(struct cache_tree *it, mode = ce->ce_mode; entlen = pathlen - baselen; } - if (mode != S_IFGITLINK && !missing_ok && !has_sha1_file(sha1)) + if (mode != S_IFGITLINK && !missing_ok && !has_sha1_file(sha1)) { + strbuf_release(&buffer); return error("invalid object %06o %s for '%.*s'", mode, sha1_to_hex(sha1), entlen+baselen, path); + } if (ce->ce_flags & CE_REMOVE) continue; /* entry being removed */
-- 1.7.2.1.544.ga752d.dirty