Re: [PATCH] qede: Prevent possible snprintf() truncation by bounding %s string format
From: David Laight <hidden>
Date: 2026-07-01 19:33:17
Also in:
lkml
On Wed, 1 Jul 2026 17:47:11 +0300 Baran Tuna [off-list ref] wrote:
quoted hunk ↗ jump to hunk
GCC warning shows that formatted strings may exceed the fixed-size destination buffers. Bounding the %s string format so the maximum formatted output always fits. This eliminates the -Wformat-truncation warning. Signed-off-by: Baran Tuna <redacted> --- drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c index 647f30a16a94..5428f53150a0 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c +++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c@@ -618,10 +618,10 @@ static void qede_get_drvinfo(struct net_device *ndev, if ((strlen(storm) + strlen("[storm]")) < sizeof(info->version)) snprintf(info->version, sizeof(info->version), - "[storm %s]", storm); + "[storm %.16s]", storm); else snprintf(info->version, sizeof(info->version), - "%s", storm); + "%.16s", storm);
That looks wrong. The code is using two different formats based on the length of 'storm' but you are truncating it to the same length in both cases. I think this will work: if (snprintf(info->version, sizeof(info->version), "[storm %s]", storm) >= sizeof(info->strorm)) strscpy(info->version, storm); -- David
quoted hunk ↗ jump to hunk
if (edev->dev_info.common.mbi_version) { snprintf(mbi, ETHTOOL_FWVERS_LEN, "%d.%d.%d",@@ -632,10 +632,10 @@ static void qede_get_drvinfo(struct net_device *ndev, (edev->dev_info.common.mbi_version & QED_MBI_VERSION_0_MASK) >> QED_MBI_VERSION_0_OFFSET); snprintf(info->fw_version, sizeof(info->fw_version), - "mbi %s [mfw %s]", mbi, mfw); + "mbi %.10s [mfw %.10s]", mbi, mfw); } else { snprintf(info->fw_version, sizeof(info->fw_version), - "mfw %s", mfw); + "mfw %.16s", mfw); } strscpy(info->bus_info, pci_name(edev->pdev), sizeof(info->bus_info));