]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/osdep/windows/emuconsole.c (grub_console_putchar):
authorVladimir Serbinenko <phcoder@gmail.com>
Wed, 4 Dec 2013 09:05:33 +0000 (10:05 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Wed, 4 Dec 2013 09:05:33 +0000 (10:05 +0100)
Remove variable length arrays.
* grub-core/term/efi/console.c (grub_console_putchar): Likewise.

ChangeLog
grub-core/osdep/windows/emuconsole.c
grub-core/term/efi/console.c

index 2772581482550a808545dee0c6d41e5a5d3e4ef3..649e8669995997913baa3853f344bf04b92b9b49 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-04  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/osdep/windows/emuconsole.c (grub_console_putchar):
+       Remove variable length arrays.
+       * grub-core/term/efi/console.c (grub_console_putchar): Likewise.
+
 2013-12-04  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/kern/i386/qemu/init.c: Remove variable length arrays.
index a2acf2637f8baa102fceb1a06d679198cfe4a2ff..8d7483c3f252bd581089efdd25ea7cf5ed16c2ee 100644 (file)
@@ -37,7 +37,7 @@ static void
 grub_console_putchar (struct grub_term_output *term __attribute__ ((unused)),
                      const struct grub_unicode_glyph *c)
 {
-  TCHAR str[2 + c->ncomb];
+  TCHAR str[2 + 30];
   unsigned i, j;
   DWORD written;
 
@@ -47,7 +47,7 @@ grub_console_putchar (struct grub_term_output *term __attribute__ ((unused)),
   else
     str[0] = (c->base & 0xffff);
   j = 1;
-  for (i = 0; i < c->ncomb; i++)
+  for (i = 0; i < c->ncomb && j+1 < ARRAY_SIZE (str); i++)
     if (c->base < 0xffff)
       str[j++] = grub_unicode_get_comb (c)[i].code;
   str[j] = 0;
index a000fa64818929b935fd657bf1b508ad3a2e3c4f..a37eb841c72fa39f93ae687dab73fa4bcf3dddc1 100644 (file)
@@ -69,7 +69,7 @@ static void
 grub_console_putchar (struct grub_term_output *term __attribute__ ((unused)),
                      const struct grub_unicode_glyph *c)
 {
-  grub_efi_char16_t str[2 + c->ncomb];
+  grub_efi_char16_t str[2 + 30];
   grub_efi_simple_text_output_interface_t *o;
   unsigned i, j;
 
@@ -84,7 +84,7 @@ grub_console_putchar (struct grub_term_output *term __attribute__ ((unused)),
   else
     str[0] = (grub_efi_char16_t)  map_char (c->base & 0xffff);
   j = 1;
-  for (i = 0; i < c->ncomb; i++)
+  for (i = 0; i < c->ncomb && j + 1 < ARRAY_SIZE (str); i++)
     if (c->base < 0xffff)
       str[j++] = grub_unicode_get_comb (c)[i].code;
   str[j] = 0;