From: Junio C Hamano Date: Tue, 20 Oct 2015 21:32:32 +0000 (-0700) Subject: mailinfo: plug strbuf leak during continuation line handling X-Git-Tag: v2.7.0-rc0~64^2~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=12d19e80b049dbedd51e9e6a70260383b9db4dd0;p=thirdparty%2Fgit.git 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 --- 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; }