summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiad Kaufman2014-01-27 15:34:23 +0100
committerEmmanuel Grumbach2014-02-03 21:23:42 +0100
commit84b0312eee685bd0b2ca250dcea7049c8be4b655 (patch)
tree14c3544d14d08ef4033a4c3760159ca3d252853f
parentiwlwifi: mvm: support multiple firmware sections (diff)
downloadkernel-qcow2-linux-84b0312eee685bd0b2ca250dcea7049c8be4b655.tar.gz
kernel-qcow2-linux-84b0312eee685bd0b2ca250dcea7049c8be4b655.tar.xz
kernel-qcow2-linux-84b0312eee685bd0b2ca250dcea7049c8be4b655.zip
iwlwifi: fix potential buffer overrun in fw name
Fix a potential buffer overrun when creating the fw name in drv->firmware_name by setting a maximal length to the char array copied to it. The maximal length is also updated to 32 rather than 25 to keep both 32bit and 64bit alignment without requiring padding to the struct it is in. Signed-off-by: Liad Kaufman <liad.kaufman@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-drv.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-drv.c b/drivers/net/wireless/iwlwifi/iwl-drv.c
index c3728163be46..b3bc30b4292b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-drv.c
+++ b/drivers/net/wireless/iwlwifi/iwl-drv.c
@@ -128,7 +128,7 @@ struct iwl_drv {
const struct iwl_cfg *cfg;
int fw_index; /* firmware we're trying to load */
- char firmware_name[25]; /* name of firmware file to load */
+ char firmware_name[32]; /* name of firmware file to load */
struct completion request_firmware_complete;
@@ -237,7 +237,8 @@ static int iwl_request_firmware(struct iwl_drv *drv, bool first)
return -ENOENT;
}
- sprintf(drv->firmware_name, "%s%s%s", name_pre, tag, ".ucode");
+ snprintf(drv->firmware_name, sizeof(drv->firmware_name), "%s%s.ucode",
+ name_pre, tag);
IWL_DEBUG_INFO(drv, "attempting to load firmware %s'%s'\n",
(drv->fw_index == UCODE_EXPERIMENTAL_INDEX)