From 63fa8ef94e21a119bdaf5db815258ea5a35bd7a1 Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Sun, 25 Dec 2011 16:15:01 +0100 Subject: [PATCH] * grub-core/term/gfxterm.c (grub_gfxterm_putchar): Don't set values outside of range. --- ChangeLog | 7 ++++++- grub-core/term/gfxterm.c | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ba142a6eb..ba35da3d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ 2011-12-25 Vladimir Serbinenko - Avoid cutting in the middle of UTF-8 string. + * grub-core/term/gfxterm.c (grub_gfxterm_putchar): Don't set values + outside of range. + +2011-12-25 Vladimir Serbinenko + + Avoid cutting in the middle of UTF-8 character. * include/grub/charset.h (grub_getend): New function. * grub-core/script/function.c (grub_script_function_find): Use diff --git a/grub-core/term/gfxterm.c b/grub-core/term/gfxterm.c index a10af5930..0eee64105 100644 --- a/grub-core/term/gfxterm.c +++ b/grub-core/term/gfxterm.c @@ -893,7 +893,9 @@ grub_gfxterm_putchar (struct grub_term_output *term, { unsigned i; - for (i = 1; i < char_width; i++) + for (i = 1; i < char_width && p + i < + virtual_screen.text_buffer + virtual_screen.columns + * virtual_screen.rows; i++) { grub_free (p[i].code); p[i].code = grub_unicode_glyph_from_code (' ');