Thread (2 messages) 2 messages, 2 authors, 2017-04-28

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help