diff --git a/ChangeLog b/ChangeLog index 745664b67..dcc002fe2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-12-17 Vladimir Serbinenko + + Add missing format_arg attribute to check that printf with translated + messages has proper arguments. + 2013-12-17 Vladimir Serbinenko Use grub_xasprintf to format translated error messages containing diff --git a/include/grub/i18n.h b/include/grub/i18n.h index a91d73346..468602d92 100644 --- a/include/grub/i18n.h +++ b/include/grub/i18n.h @@ -25,7 +25,7 @@ /* NLS can be disabled through the configure --disable-nls option. */ #if (defined(ENABLE_NLS) && ENABLE_NLS) || !defined (GRUB_UTIL) -extern const char *(*EXPORT_VAR(grub_gettext)) (const char *s); +extern const char *(*EXPORT_VAR(grub_gettext)) (const char *s) __attribute__ ((format_arg (1))); # ifdef GRUB_UTIL @@ -41,7 +41,7 @@ extern const char *(*EXPORT_VAR(grub_gettext)) (const char *s); for invalid uses of the value returned from these functions. On pre-ANSI systems without 'const', the config.h file is supposed to contain "#define const". */ -static inline const char * __attribute__ ((always_inline)) +static inline const char * __attribute__ ((always_inline,format_arg (1))) gettext (const char *str) { return str; @@ -50,13 +50,13 @@ gettext (const char *str) #endif /* (defined(ENABLE_NLS) && ENABLE_NLS) */ #ifdef GRUB_UTIL -static inline const char * __attribute__ ((always_inline)) +static inline const char * __attribute__ ((always_inline,format_arg (1))) _ (const char *str) { return gettext(str); } #else -static inline const char * __attribute__ ((always_inline)) +static inline const char * __attribute__ ((always_inline,format_arg (1))) _ (const char *str) { return grub_gettext(str);