On Sun, 2017-06-18 at 22:05 -0700, Govindarajulu Varadarajan wrote:
> With -Wformat-truncation=, gcc throws the following warning. Instead of
> using snprintf, use kasprintf and allocate string size as needed.
>
> drivers/net/ethernet/cisco/enic/enic_main.c: In function ‘enic_open’:
> drivers/net/ethernet/cisco/enic/enic_main.c:1740:15: warning: ‘%u’ directive
> output may be truncated writing between 1 and 2 bytes into a region of size
> between 1 and 12 [-Wformat-truncation=]
> "%.11s-rx-%u", netdev->name, i);
> ^~
> drivers/net/ethernet/cisco/enic/enic_main.c:1740:5: note: directive argument
> in the range [0, 16]
> "%.11s-rx-%u", netdev->name, i);
> ^~~~~~~~~~~~~
> drivers/net/ethernet/cisco/enic/enic_main.c:1738:4: note: ‘snprintf’ output
> between 6 and 18 bytes into a destination of size 16
> snprintf(enic->msix[intr].devname,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> sizeof(enic->msix[intr].devname),
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> "%.11s-rx-%u", netdev->name, i);
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/net/ethernet/cisco/enic/enic_main.c:1751:5: warning: ‘snprintf’
> output may be truncated before the last format character
> [-Wformat-truncation=]
> "%.11s-tx-%u", netdev->name, i);
Perhaps it'd be better to use a style
with a variable length format precision
ie:
"%.*s-tx-%u", IFNAMSIZ - 4 - <something>, netdev-name, i)