[dpdk-dev] [PATCH 2/2] ethdev: use strlcpy instead of snprintf on initialization

Andrew Rybchenko arybchenko at solarflare.com
Fri Mar 1 08:48:58 CET 2019


On 3/1/19 1:47 AM, Stephen Hemminger wrote:
> Don't need to use snprintf for simple name copy.
>
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
> ---
>   lib/librte_ethdev/rte_ethdev.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
> index 95889ed206db..8bd54dcf58c1 100644
> --- a/lib/librte_ethdev/rte_ethdev.c
> +++ b/lib/librte_ethdev/rte_ethdev.c
> @@ -459,7 +459,7 @@ rte_eth_dev_allocate(const char *name)
>   	}
>   
>   	eth_dev = eth_dev_get(port_id);
> -	snprintf(eth_dev->data->name, sizeof(eth_dev->data->name), "%s", name);
> +	strlcpy(eth_dev->data->name, name, RTE_ETH_NAME_MAX_LEN);

Why is sizeof() substituted with RTE_ETH_NAME_MAX_LEN?
I thought that sizeof() is the first choice in such cases since it is a 
bit more
safer vs possible changes in the code.

BTW, wouldn't it be more friendly to check name length on entry and
reject if it is too long? (and same for rte_eth_dev_create())
I agree that strlcpy() should be used anyway.

>   	eth_dev->data->port_id = port_id;
>   	eth_dev->data->mtu = ETHER_MTU;
>   



More information about the dev mailing list