From: Bert Wesarg Date: Thu, 26 Apr 2012 16:53:07 GMT Subject: Re: [PATCH] diff: avoid stack-buffer-read-overrun for very long name Message-ID: In-Reply-To: <87y5piwjay.fsf@rho.meyering.net> On Thu, Apr 26, 2012 at 18:26, Jim Meyering wrote: > Bert Wesarg wrote: >> On Thu, Apr 26, 2012 at 18:13, Junio C Hamano wrote: >>> Jim Meyering writes: >> strbuf_ensure_terminator(struct strbuf* buf, int term, int always)? > > Nice!  So far, that's the name I prefer. > But why the third parameter? See the second part of my reply: >>> ------------------------------------ >>> builtin/branch.c- if (!buf.len || buf.buf[buf.len-1] != '\n') >>> builtin/branch.c: strbuf_addch(&buf, '\n'); >>> -- >>> strbuf.h- if (sb->len && sb->buf[sb->len - 1] != '\n') >>> strbuf.h: strbuf_addch(sb, '\n'); > > Please note, that while they are checking the .len, they both behave > differently if .len == 0 or not. > The first always append a '\n', the latter only, if the string isn't empty.