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

Re: [PATCH 2/2] sequencer.c: plug mem leak in git_sequencer_config

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 4, 2018, 03:44 UTC
Message-ID
<xmqqmuwb5i7k.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<xmqq8t7v6zpd.fsf@gitster-ct.c.googlers.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 21 quoted lines
> Stefan Beller <sbeller@google.com> writes:
>
>> Signed-off-by: Stefan Beller <sbeller@google.com>
>> ---
>>  sequencer.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/sequencer.c b/sequencer.c
>> index b98690ecd41..aba03e9429a 100644
>> --- a/sequencer.c
>> +++ b/sequencer.c
>> @@ -175,6 +175,7 @@ static int git_sequencer_config(const char *k, const char *v, void *cb)
>>  			warning(_("invalid commit message cleanup mode '%s'"),
>>  				  s);
>>  
>> +		free(s);
>>  		return status;
>>  	}
>
> Shouldn't 's' now lose 'const'?  After all, git_config_string()
> gives you an allocated memory so...

Yikes. Should git_config_string() and git_config_pathname() take "char **dst" instead of "const char **" as their out-location parameter? They both assign a pointer to an allocated piece of memory for the caller to own or dispose of, but because of const-ness of the pointee their first parameter has, a caller like this one must declare "const char *s" yet is forced to call free() not to leak the value when it is done.

Previous: Junio C HamanoNext: Jeff King
Message 4 of 11 in “sequencer.c: plug leaks in do_pick_commit”
  1. 1/2 sequencer.c: plug leaks in do_pick_commitStefan Beller, Jun 1, 2018
  2. 2/2 sequencer.c: plug mem leak in git_sequencer_configStefan Beller, Jun 1, 2018
  3. Junio C HamanoJun 4, 2018
  4. Junio C HamanoJun 4, 2018
  5. Jeff KingJun 4, 2018
  6. Junio C HamanoJun 4, 2018
  7. Jeff KingJun 4, 2018
  8. Junio C HamanoJun 4, 2018
  9. Johannes SchindelinJun 21, 2018
  10. Jeff KingJun 21, 2018
  11. Jeff KingJun 4, 2018

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.