Re: [PATCH] diff: avoid stack-buffer-read-overrun for very long name
- From
Jim Meyering <jim@meyering.net>
- Date
- Apr 26, 2012, 17:26 UTC
- Message-ID
- <87ehrawgja.fsf@rho.meyering.net>
- In-Reply-To
- <CAKPyHN2VkBo6OKgbhTNSu-LFwabGkFFKAF595rJuXbhWwdte+g@mail.gmail.com>
Bert Wesarg wrote:
Show 10 quoted lines
> On Thu, Apr 26, 2012 at 18:26, Jim Meyering <jim@meyering.net> wrote: >> Bert Wesarg wrote: >>> On Thu, Apr 26, 2012 at 18:13, Junio C Hamano <gitster@pobox.com> wrote: >>>> Jim Meyering <jim@meyering.net> 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:
Oh. I missed that.
Show 10 quoted lines
>>>> ------------------------------------ >>>> 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.
Glad you noticed the difference. However, is one exception worth complicating the interface?