Re: [PATCHv4 1/4] notes: don't leak memory in git_config_get_notes_strategy
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Apr 1, 2016, 00:46 UTC
- Message-ID
- <CAPig+cQ=83k-of=jP1r6bYqsYrUhiDKhR3_Bm-SfYndn+sL=Dg@mail.gmail.com>
- In-Reply-To
- <1459470946-16522-2-git-send-email-sbeller@google.com>
On Thu, Mar 31, 2016 at 8:35 PM, Stefan Beller <sbeller@google.com> wrote:
Show 21 quoted lines
> `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 <sbeller@google.com>
> ---
> 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...
Show 9 quoted lines
> 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