From 12d19e80b049dbedd51e9e6a70260383b9db4dd0 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 20 Oct 2015 14:32:32 -0700 Subject: [PATCH] mailinfo: plug strbuf leak during continuation line handling Whether this loop is left via EOF/break or upon finding a non-continuation line, the storage used for the contination line handling is left behind. Signed-off-by: Junio C Hamano --- builtin/mailinfo.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c index 73be47c497..a183cd49fd 100644 --- a/builtin/mailinfo.c +++ b/builtin/mailinfo.c @@ -409,6 +409,8 @@ static int is_rfc2822_header(const struct strbuf *line) static int read_one_header_line(struct strbuf *line, FILE *in) { + struct strbuf continuation = STRBUF_INIT; + /* Get the first part of the line. */ if (strbuf_getline(line, in, '\n')) return 0; @@ -430,7 +432,6 @@ static int read_one_header_line(struct strbuf *line, FILE *in) */ for (;;) { int peek; - struct strbuf continuation = STRBUF_INIT; peek = fgetc(in); ungetc(peek, in); if (peek != ' ' && peek != '\t') @@ -441,6 +442,7 @@ static int read_one_header_line(struct strbuf *line, FILE *in) strbuf_rtrim(&continuation); strbuf_addbuf(line, &continuation); } + strbuf_release(&continuation); return 1; }