Mercurial > hg > openttd
changeset 8584:c9982ce96837 draft
(svn r12165) -Fix [FS#1652, FS#1773]: buffer overflow when drawing scrolling news
author | glx <glx@openttd.org> |
---|---|
date | Sun, 17 Feb 2008 00:47:39 +0000 |
parents | 6843e1063801 |
children | 2880bcf43f14 |
files | src/main_gui.cpp |
diffstat | 1 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -1668,7 +1668,7 @@ { char buf[512]; StringID str; - const char *s; + const char *s, *last; char *d; DrawPixelInfo tmp_dpi, *old_dpi; int x; @@ -1685,19 +1685,22 @@ s = buf; d = buffer; + last = lastof(buffer); for (;;) { WChar c = Utf8Consume(&s); if (c == 0) { - *d = '\0'; break; - } else if (*s == 0x0D) { + } else if (c == 0x0D) { + if (d + 4 >= last) break; d[0] = d[1] = d[2] = d[3] = ' '; d += 4; } else if (IsPrintable(c)) { + if (d + Utf8CharLen(c) >= last) break; d += Utf8Encode(d, c); } } + *d = '\0'; if (!FillDrawPixelInfo(&tmp_dpi, 141, 1, width, 11)) return true;