Re: [PATCH]: Cleanup: Remove gcc format string warnings when compiling with -Wformat-security

From: Robert Hancock
Date: Thu Feb 05 2009 - 18:43:25 EST


Roland Dreier wrote:
> Here's the patch that I get when I blindly patch every single location
> that emits this warning.

I would strongly prefer to do this with a little more care. For example
the b43/main.c change:

> --- a/drivers/net/wireless/b43/main.c
> +++ b/drivers/net/wireless/b43/main.c
> @@ -2005,9 +2005,9 @@ static void b43_print_fw_helptext(struct b43_wl
> *wl, bool error)
> "http://linuxwireless.org/en/users/Drivers/b43#devicefirmware "
> "and download the latest firmware (version 4).\n";
> if (error)
> - b43err(wl, text);
> + b43err(wl, "%s", text);
> else
> - b43warn(wl, text);
> + b43warn(wl, "%s", text);
> }
would probably be better solved by doing

--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -1999,11 +1999,11 @@ static void b43_release_firmware(struct b43_wldev *dev)
static void b43_print_fw_helptext(struct b43_wl *wl, bool error)
{
- const char *text;
+ static const char text[] =
+ "You must go to "
+ "http://linuxwireless.org/en/users/Drivers/b43#devicefirmware "
+ "and download the latest firmware (version 4).\n";
- text = "You must go to "
- "http://linuxwireless.org/en/users/Drivers/b43#devicefirmware "
- "and download the latest firmware (version 4).\n";
if (error)
b43err(wl, text);
else

"const char* const" text would likely work as well..


and in any case I'm not totally convinced that we want to add the bloat
for trivial cases like

char *safe = "foo";
printk(safe);

Well, in that case, printk("foo") would be the obvious solution :-)


Would be nice to think of a cleverer way to handle that...

- R.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/