Re: [PATCHv4 1/4] notes: don't leak memory in git_config_get_notes_strategy
From: Eric Sunshine <hidden>
Date: 2016-06-15 23:09:09
On Thu, Mar 31, 2016 at 8:35 PM, Stefan Beller [off-list ref] wrote:
quoted hunk ↗ jump to hunk
`value` is just a temporary scratchpad, so we need to make sure it doesn't leak. It is xstrdup'd in `git_config_get_string_const` and `parse_notes_merge_strategy` just compares the string against predefined values, so no need to keep it around longer. Signed-off-by: Stefan Beller <redacted> ---diff --git a/builtin/notes.c b/builtin/notes.c index 52aa9af..afcfa8f 100644 --- a/builtin/notes.c +++ b/builtin/notes.c@@ -741,13 +741,14 @@ static int merge_commit(struct notes_merge_options *o) static int git_config_get_notes_strategy(const char *key, enum notes_merge_strategy *strategy) { - const char *value; + char *value; - if (git_config_get_string_const(key, &value)) + if (git_config_get_string(key, &value)) return 1;
Meh. Rather than reverting the git_config_get_value(), it would have
been just as easy and safer (less chance of a future change
re-introducing a leak) if you had just inserted the necessary check
here:
if (!value)
return config_error_nonbool(key);
But, perhaps it's not worth the patch churn at this point...
if (parse_notes_merge_strategy(value, strategy))
git_die_config(key, "unknown notes merge strategy %s", value);
+ free(value);
return 0;
}
--
2.5.0.264.gc776916.dirty