wifi: iwlwifi: limit printed string from FW file
authorJohannes Berg <johannes.berg@intel.com>
Sun, 9 Feb 2025 12:34:51 +0000 (14:34 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 11 Feb 2025 11:41:46 +0000 (12:41 +0100)
There's no guarantee here that the file is always with a
NUL-termination, so reading the string may read beyond the
end of the TLV. If that's the last TLV in the file, it can
perhaps even read beyond the end of the file buffer.

Fix that by limiting the print format to the size of the
buffer we have.

Fixes: aee1b6385e29 ("iwlwifi: support fseq tlv and print fseq version")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250209143303.cb5f9d0c2f5d.Idec695d53c6c2234aade306f7647b576c7e3d928@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/iwl-drv.c

index d3a65f33097cbcdcccd0f388e92ff4086c77c979..352b6e73e08f3d59110d7357cd919d2fb9cbeae4 100644 (file)
@@ -1181,7 +1181,7 @@ static int iwl_parse_tlv_firmware(struct iwl_drv *drv,
 
                        if (tlv_len != sizeof(*fseq_ver))
                                goto invalid_tlv_len;
-                       IWL_INFO(drv, "TLV_FW_FSEQ_VERSION: %s\n",
+                       IWL_INFO(drv, "TLV_FW_FSEQ_VERSION: %.32s\n",
                                 fseq_ver->version);
                        }
                        break;