Re: [PATCH 11/26] cat-file: fix memory leak
From: Johannes Schindelin <hidden>
Date: 2017-04-28 09:59:48
Hi Junio, On Wed, 26 Apr 2017, Junio C Hamano wrote:
Johannes Schindelin [off-list ref] writes:quoted
Discovered by Coverity. Signed-off-by: Johannes Schindelin <redacted> --- builtin/cat-file.c | 1 + 1 file changed, 1 insertion(+)diff --git a/builtin/cat-file.c b/builtin/cat-file.c index 1890d7a6390..9af863e7915 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c@@ -165,6 +165,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, die("git cat-file %s: bad file", obj_name); write_or_die(1, buf, size); + free(buf); return 0; }This is a border-line "Meh". Just like we do not free resources immediately before calling die(), we can leave this as-is as the only thing that happens after this is a return from cmd_cat_file() back to main() that exits.
If you are mostly concerned about the status quo, that is true. I am a lot more concerned with future changes, where we may easily decide that it is time to move a file-local function out of its hiding place and make it more usable. From that perspective, it is one thing to have a blatant memory leak in a cmd_*() function, and it is an entirely different matter to have such a leak in a function that happens to be called only from cmd_*() functions: somebody familiar enough with Git's coding conventions (such as myself) will *expect* cmd_*() to have leaks left and right and pay attention when libifying that code, but be a lot less concerned about such leaks in other functions. And of course this concerns me more than you, as I am still trying to drive forward the effort to convert more scripts into builtins. So on my own behalf: thank you for accepting this patch. Ciao, Dscho