git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 4/5] fix memory leak parsing core.commentchar

From
Jeff King <peff@peff.net>
Date
Jul 24, 2014, 04:42 UTC
Message-ID
<20140724044239.GD32355@peff.net>
In-Reply-To
<20140724043940.GA31282@peff.net>

When we see the core.commentchar config option, we extract the string with git_config_string, which does two things:

  1. It complains via config_error_nonbool if there is no
     string value.
  2. It makes a copy of the string.

Since we immediately parse the string into its single-character value, we only care about (1). And in fact (2) is a detriment, as it means we leak the copy. Instead, let's just check the pointer value ourselves, and parse directly from the const string we already have.

Signed-off-by: Jeff King <peff@peff.net>
---
 config.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/config.c b/config.c
index 9767c4b..058505c 100644
--- a/config.c
+++ b/config.c
@@ -817,14 +817,12 @@ static int git_default_core_config(const char *var, const char *value)
 		return git_config_string(&editor_program, var, value);
 
 	if (!strcmp(var, "core.commentchar")) {
-		const char *comment;
-		int ret = git_config_string(&comment, var, value);
-		if (ret)
-			return ret;
-		else if (!strcasecmp(comment, "auto"))
+		if (!value)
+			return config_error_nonbool(var);
+		else if (!strcasecmp(value, "auto"))
 			auto_comment_line_char = 1;
-		else if (comment[0] && !comment[1]) {
-			comment_line_char = comment[0];
+		else if (value[0] && !value[1]) {
+			comment_line_char = value[0];
 			auto_comment_line_char = 0;
 		} else
 			return error("core.commentChar should only be one character");
-- 
2.0.0.566.gfe3e6b2
Previous: Jeff KingNext: Jeff King
Message 5 of 8 in “coverity mixed bag”
  1. 0/5 coverity mixed bagJeff King, Jul 24, 2014
  2. 1/5 receive-pack: don't copy "dir" parameterJeff King, Jul 24, 2014
  3. 2/5 free ref string returned by dwim_refJeff King, Jul 24, 2014
  4. 3/5 transport: fix leaks in refs_from_alternate_cbJeff King, Jul 24, 2014
  5. 4/5 fix memory leak parsing core.commentcharJeff King, Jul 24, 2014
  6. 5/5 apply: avoid possible bogus pointerJeff King, Jul 24, 2014
  7. Junio C HamanoJul 24, 2014
  8. Stefan BellerJul 29, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.