Re: [PATCH 2/2] am: plug FILE * leak in split_mail_conv()
- From
Jeff King <peff@peff.net>
- Date
- May 12, 2016, 04:47 UTC
- Message-ID
- <20160512044730.GA5436@sigill.intra.peff.net>
- In-Reply-To
- <20160511233546.13090-2-gitster@pobox.com>
On Wed, May 11, 2016 at 04:35:46PM -0700, Junio C Hamano wrote:
Show 19 quoted lines
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
> builtin/am.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/builtin/am.c b/builtin/am.c
> index f1a84c6..a373928 100644
> --- a/builtin/am.c
> +++ b/builtin/am.c
> @@ -761,9 +761,11 @@ static int split_mail_conv(mail_conv_fn fn, struct am_state *state,
> mail = mkpath("%s/%0*d", state->dir, state->prec, i + 1);
>
> out = fopen(mail, "w");
> - if (!out)
> + if (!out) {
> + fclose(in);
> return error(_("could not open '%s' for writing: %s"),
> mail, strerror(errno));
> + }Presumably `fclose` doesn't ever overwrite errno in practice, but I guess it could in theory.
I also found it weird that we might fclose(stdin) via this line, but that matches what happens in the non-error path, so I guess it's OK?
-Peff