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)

Reply via email to