Subject: Re: [PATCH net-next] enic: use kasprintf instead of snprintf

From: Joe Perches <[email-masked]>
Date: Sun, 18 Jun 2017 22:40:52 -0700

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)