Ubuntu's GCC enables -Wformat-security by default. This causes GCC to (IMO rightly!) complain about constructs such as this:
grub_printf (_("foo")); ... because it's all too easy for a translator to (usually accidentally) insert % sequences which would cause printf to behave incorrectly. This should instead be: grub_printf ("%s", _("foo")); Patch follows. I can't help thinking that this would be easier with a grub_puts, but perhaps that isn't worth it given the relatively small number of occurrences here? Also, should the line in notify_execution_failure instead be: - grub_printf (_("Failed to boot default entries.\n")); + grub_printf ("%s\n", _("Failed to boot default entries.")); ... to get rid of the unsightly \n in this translated string? 2009-12-07 Colin Watson <cjwat...@ubuntu.com> * normal/menu_entry.c (run): Don't pass the result of gettext as the first argument to grub_printf, appeasing -Wformat-security. (grub_menu_entry_run): Likewise. * normal/menu_text.c (grub_wait_after_message): Likewise. (print_message): Likewise. (notify_execution_failure): Likewise. === modified file 'normal/menu_entry.c' --- normal/menu_entry.c 2009-12-05 11:25:07 +0000 +++ normal/menu_entry.c 2009-12-07 14:02:20 +0000 @@ -1000,7 +1000,7 @@ run (struct screen *screen) grub_cls (); grub_printf (" "); - grub_printf (_("Booting a command list")); + grub_printf ("%s", _("Booting a command list")); grub_printf ("\n\n"); @@ -1182,6 +1182,6 @@ grub_menu_entry_run (grub_menu_entry_t e grub_print_error (); grub_errno = GRUB_ERR_NONE; grub_putchar ('\n'); - grub_printf (_("Press any key to continue...")); + grub_printf ("%s", _("Press any key to continue...")); (void) grub_getkey (); } === modified file 'normal/menu_text.c' --- normal/menu_text.c 2009-12-05 11:25:07 +0000 +++ normal/menu_text.c 2009-12-07 14:02:45 +0000 @@ -40,7 +40,7 @@ void grub_wait_after_message (void) { grub_putchar ('\n'); - grub_printf (_("Press any key to continue...")); + grub_printf ("%s", _("Press any key to continue...")); (void) grub_getkey (); grub_putchar ('\n'); } @@ -206,7 +206,7 @@ entry is highlighted."); if (nested) { grub_printf ("\n "); - grub_printf (_("ESC to return previous menu.")); + grub_printf ("%s", _("ESC to return previous menu.")); } } } @@ -655,7 +655,7 @@ notify_execution_failure (void *userdata grub_errno = GRUB_ERR_NONE; } grub_printf ("\n "); - grub_printf (_("Failed to boot default entries.\n")); + grub_printf ("%s", _("Failed to boot default entries.\n")); grub_wait_after_message (); } Thanks, -- Colin Watson [cjwat...@ubuntu.com] _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel