Thread (47 messages) 47 messages, 13 authors, 2017-07-18

Re: [PATCH 17/22] platform/x86: alienware-wmi: fix format string overflow warning

From: Arnd Bergmann <arnd@arndb.de>
Date: 2017-07-14 19:37:12
Also in: linux-scsi, lkml, platform-driver-x86

On Fri, Jul 14, 2017 at 9:18 PM, Andy Shevchenko
[off-list ref] wrote:
On Fri, Jul 14, 2017 at 3:07 PM, Arnd Bergmann [off-list ref] wrote:
quoted
gcc points out a possible format string overflow for a large value of 'zone':

drivers/platform/x86/alienware-wmi.c: In function 'alienware_wmi_init':
drivers/platform/x86/alienware-wmi.c:461:24: error: '%02X' directive writing between 2 and 8 bytes into a region of size 6 [-Werror=format-overflow=]
   sprintf(buffer, "zone%02X", i);
                        ^~~~
drivers/platform/x86/alienware-wmi.c:461:19: note: directive argument in the range [0, 2147483646]
   sprintf(buffer, "zone%02X", i);
                   ^~~~~~~~~~
drivers/platform/x86/alienware-wmi.c:461:3: note: 'sprintf' output between 7 and 13 bytes into a destination of size 10

While the zone should never be that large, it's easy to make the
buffer a few bytes longer so gcc can prove this to be safe.
Please, be a bit smarter on such fixes.

Here we need to convert

int i;

to

u8 i;
That was my first impulse, but then I decided not to change the
idiomatic 'int i' for the index variable to 'u8' as that would be
less idiomatic.
I will take it after addressing above.

P.S. You may do this change across the file.
How about changing it to 'u8 zone'?

     Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help