From cf1adfdff5215851f7fd9583d536fd8cb7040530 Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Tue, 28 Feb 2012 11:50:53 +0100 Subject: [PATCH] * grub-core/gettext/gettext.c (grub_mofile_open): Call grub_gettext_delete_list before changing grub_gettext_max to avoid running out of array bounds. --- ChangeLog | 10 ++++++++-- grub-core/gettext/gettext.c | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index e63e4d99c..eb292b60a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,15 @@ -2012-02-27 Vladimir Serbinenko +2012-02-28 Vladimir Serbinenko + + * grub-core/gettext/gettext.c (grub_mofile_open): Call + grub_gettext_delete_list before changing grub_gettext_max to avoid + running out of array bounds. + +2012-02-28 Vladimir Serbinenko * grub-core/term/i386/pc/vga_text.c: Add GRUB_MACHINE_MULTIBOOT to grub_vga_text_init/grub_vga_text_fini. -2012-02-27 Vladimir Serbinenko +2012-02-28 Vladimir Serbinenko * grub-core/loader/i386/xnu.c (grub_xnu_boot): Fix format specification. diff --git a/grub-core/gettext/gettext.c b/grub-core/gettext/gettext.c index 46fe107ad..2b915910d 100644 --- a/grub-core/gettext/gettext.c +++ b/grub-core/gettext/gettext.c @@ -257,6 +257,8 @@ grub_mofile_open (const char *filename) "mo: invalid mo version in file: %s", filename); } + grub_gettext_delete_list (); + grub_gettext_offset_original = grub_le_to_cpu32 (head.offset_original); grub_gettext_offset_translation = grub_le_to_cpu32 (head.offset_translation); grub_gettext_max = grub_le_to_cpu32 (head.number_of_strings); @@ -266,7 +268,6 @@ grub_mofile_open (const char *filename) grub_file_close (fd_mo); fd_mo = 0; - grub_gettext_delete_list (); grub_gettext_msg_list = grub_zalloc (grub_gettext_max * sizeof (grub_gettext_msg_list[0])); if (!grub_gettext_msg_list)