wifi: iwlwifi: mvm: check firmware response size
authorJohannes Berg <johannes.berg@intel.com>
Mon, 17 Apr 2023 08:41:33 +0000 (11:41 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 18 Apr 2023 12:47:56 +0000 (14:47 +0200)
Check the firmware response size for responses to the
memory read/write command in debugfs before using it.

Fixes: 2b55f43f8e47 ("iwlwifi: mvm: Add mem debugfs entry")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230417113648.0d56fcaf68ee.I70e9571f3ed7263929b04f8fabad23c9b999e4ea@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c

index affaed4d13fa39cc59ff2f3df8614d51c5b44f78..84a48853842702c5dcfd3951e8c8588fe90dd569 100644 (file)
@@ -1961,6 +1961,11 @@ static ssize_t iwl_dbgfs_mem_read(struct file *file, char __user *user_buf,
        if (ret < 0)
                return ret;
 
+       if (iwl_rx_packet_payload_len(hcmd.resp_pkt) < sizeof(*rsp)) {
+               ret = -EIO;
+               goto out;
+       }
+
        rsp = (void *)hcmd.resp_pkt->data;
        if (le32_to_cpu(rsp->status) != DEBUG_MEM_STATUS_SUCCESS) {
                ret = -ENXIO;
@@ -2037,6 +2042,11 @@ static ssize_t iwl_dbgfs_mem_write(struct file *file,
        if (ret < 0)
                return ret;
 
+       if (iwl_rx_packet_payload_len(hcmd.resp_pkt) < sizeof(*rsp)) {
+               ret = -EIO;
+               goto out;
+       }
+
        rsp = (void *)hcmd.resp_pkt->data;
        if (rsp->status != DEBUG_MEM_STATUS_SUCCESS) {
                ret = -ENXIO;