wifi: iwlwifi: fix format-truncation warnings
RFC PATCH 1/1 wifi: iwlwifi: fix format-truncation warnings
On v6.6-rc4 with GCC 13.2 I see:
drivers/net/wireless/intel/iwlwifi/dvm/main.c:1467:19: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size 32 [-Wformat-truncation=] drivers/net/wireless/intel/iwlwifi/dvm/main.c:1465:9: note: 'snprintf' output between 1 and 64 bytes into a destination of size 32 drivers/net/wireless/intel/iwlwifi/mvm/ops.c:1307:19: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size 32 [-Wformat-truncation=] drivers/net/wireless/intel/iwlwifi/mvm/ops.c:1305:9: note: 'snprintf' output between 1 and 64 bytes into a destination of size 32 drivers/net/wireless/intel/iwlwifi/iwl-drv.c:549:33: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size between 48 and 56 [-Wformat-truncation=] drivers/net/wireless/intel/iwlwifi/iwl-drv.c:547:9: note: 'snprintf' output 9 or more bytes (assuming 80) into a destination of size 64 drivers/net/wireless/intel/iwlwifi/iwl-drv.c:729:33: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size between 48 and 56 [-Wformat-truncation=] drivers/net/wireless/intel/iwlwifi/iwl-drv.c:727:9: note: 'snprintf' output 9 or more bytes (assuming 80) into a destination of size 64 drivers/net/wireless/intel/iwlwifi/iwl-drv.c:989:51: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size between 46 and 58 [-Wformat-truncation=] drivers/net/wireless/intel/iwlwifi/iwl-drv.c:987:33: note: 'snprintf' output between 7 and 82 bytes into a destination of size 64 drivers/net/wireless/intel/iwlwifi/iwl-drv.c:984:53: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size between 40 and 50 [-Wformat-truncation=] drivers/net/wireless/intel/iwlwifi/iwl-drv.c:982:33: note: 'snprintf' output between 15 and 88 bytes into a destination of size 64
Two of the warnings were easy to fix by using strscpy(). But the rest were more challening. For now I was only able to come up with artificial testing of snprintf() return value but that doesn't make really sense. I marked the ugly once "FIXME" in the code.
Any ideas how to fix the warnings properly?
Compile tested only.
--- drivers/net/wireless/intel/iwlwifi/dvm/main.c | 5 +- drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 64 +++++++++++-------- drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 5 +- 3 files changed, 41 insertions(+), 33 deletions(-)
drivers/net/wireless/intel/iwlwifi/dvm/main.c +2 -3
@@ -1462,9 +1462,8 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,iwl_power_initialize (priv);iwl_tt_initialize (priv); -snprintf (priv->hw->wiphy->fw_version, -sizeof (priv->hw->wiphy->fw_version), -"%s" , fw->fw_version); +strscpy (priv->hw->wiphy->fw_version, fw->fw_version, +sizeof (priv->hw->wiphy->fw_version)); priv->new_scan_threshold_behaviour = !!(ucode_flags &IWL_UCODE_TLV_FLAGS_NEWSCAN );
drivers/net/wireless/intel/iwlwifi/iwl-drv.c +37 -27
94 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/mvm/ops.c +2 -3
@@ -1302,9 +1302,8 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, trans_cfg.cmd_q_wdg_timeout =iwl_mvm_get_wd_timeout (mvm,NULL , false, true); -snprintf (mvm->hw->wiphy->fw_version, -sizeof (mvm->hw->wiphy->fw_version), -"%s" , fw->fw_version); +strscpy (mvm->hw->wiphy->fw_version, fw->fw_version, +sizeof (mvm->hw->wiphy->fw_version)); trans_cfg.fw_reset_handshake =fw_has_capa (&mvm->fw->ucode_capa,IWL_UCODE_TLV_CAPA_FW_RESET_HANDSHAKE );
base-commit: 618071ae0f7e8c1aeb9b1b1e9ee876bcc3f045fc
Signature · 1 line
2.39.2
Quoted 38 lines · Kalle Valo
On v6.6-rc4 with GCC 13.2 I see:
drivers/net/wireless/intel/iwlwifi/dvm/main.c:1467:19: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size 32 [-Wformat-truncation=]drivers/net/wireless/intel/iwlwifi/dvm/main.c:1465:9: note: 'snprintf' output between 1 and 64 bytes into a destination of size 32drivers/net/wireless/intel/iwlwifi/mvm/ops.c:1307:19: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size 32 [-Wformat-truncation=]drivers/net/wireless/intel/iwlwifi/mvm/ops.c:1305:9: note: 'snprintf' output between 1 and 64 bytes into a destination of size 32drivers/net/wireless/intel/iwlwifi/iwl-drv.c:549:33: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size between 48 and 56 [-Wformat-truncation=]drivers/net/wireless/intel/iwlwifi/iwl-drv.c:547:9: note: 'snprintf' output 9 or more bytes (assuming 80) into a destination of size 64drivers/net/wireless/intel/iwlwifi/iwl-drv.c:729:33: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size between 48 and 56 [-Wformat-truncation=]drivers/net/wireless/intel/iwlwifi/iwl-drv.c:727:9: note: 'snprintf' output 9 or more bytes (assuming 80) into a destination of size 64drivers/net/wireless/intel/iwlwifi/iwl-drv.c:989:51: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size between 46 and 58 [-Wformat-truncation=]drivers/net/wireless/intel/iwlwifi/iwl-drv.c:987:33: note: 'snprintf' output between 7 and 82 bytes into a destination of size 64drivers/net/wireless/intel/iwlwifi/iwl-drv.c:984:53: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size between 40 and 50 [-Wformat-truncation=]drivers/net/wireless/intel/iwlwifi/iwl-drv.c:982:33: note: 'snprintf' output between 15 and 88 bytes into a destination of size 64Two of the warnings were easy to fix by using
strscpy(). But the rest were more challening. For now I was only able to come up with artificial testing ofsnprintf()return value but that doesn't make really sense. I marked the ugly once "FIXME" in the code.
Quoted 5 lines
Any ideas how to fix the warnings properly?
Compile tested only.
Signed-off-by Kalle Valo <[email protected]>
I didn't notice that Gregory had already submitted a patch:
Signature · 3 lines
https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches