Use fgets instead of fscanf to resolve the following warning reported by clang 14.0.0 in Fedora 37 (Rawhide):
drivers/net/mlx5/linux/mlx5_ethdev_os.c:1137:52: error: 'fscanf' may overflow; destination buffer in argument 3 has size 16, but the corresponding specifier may require size 17 [-Werror,-Wfortify-source] ret = fscanf(file, "%" RTE_STR(IF_NAMESIZE) "s", port_name); Fixes: 63d1db710fbc ("net/mlx5: fix unlimited parsing of switch info") Cc: michae...@mellanox.com Cc: sta...@dpdk.org Signed-off-by: Ali Alnubani <alia...@nvidia.com> --- Changes in v2: - Removed unnecessary variable. drivers/net/mlx5/linux/mlx5_ethdev_os.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/mlx5/linux/mlx5_ethdev_os.c b/drivers/net/mlx5/linux/mlx5_ethdev_os.c index 8fe73f1adb..4db94c5917 100644 --- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c +++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c @@ -1118,7 +1118,6 @@ mlx5_sysfs_switch_info(unsigned int ifindex, struct mlx5_switch_info *info) bool port_switch_id_set = false; bool device_dir = false; char c; - int ret; if (!if_indextoname(ifindex, ifname)) { rte_errno = errno; @@ -1134,10 +1133,9 @@ mlx5_sysfs_switch_info(unsigned int ifindex, struct mlx5_switch_info *info) file = fopen(phys_port_name, "rb"); if (file != NULL) { - ret = fscanf(file, "%" RTE_STR(IF_NAMESIZE) "s", port_name); - fclose(file); - if (ret == 1) + if (fgets(port_name, IF_NAMESIZE, file) != NULL) mlx5_translate_port_name(port_name, &data); + fclose(file); } file = fopen(phys_switch_id, "rb"); if (file == NULL) { -- 2.25.1