wifi: mwifiex: Fix memcpy() field-spanning write warning in mwifiex_cmd_802_11_scan_ext()
Replace one-element array with a flexible-array member in `struct host_cmd_ds_802_11_scan_ext`. With this, fix the following warning: elo 16 17:51:58 surfacebook kernel: ------------[ cut here ]------------ elo 16 17:51:58 surfacebook kernel: memcpy: detected field-spanning write (size 243) of single field "ext_scan->tlv_buffer" at drivers/net/wireless/marvell/mwifiex/scan.c:2239 (size 1) elo 16 17:51:58 surfacebook kernel: WARNING: CPU: 0 PID: 498 at drivers/net/wireless/marvell/mwifiex/scan.c:2239 mwifiex_cmd_802_11_scan_ext+0x83/0x90 [mwifiex] Reported-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Closes: https://lore.kernel.org/linux-hardening/ZsZNgfnEwOcPdCly@black.fi.intel.com/ Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Acked-by: Brian Norris <briannorris@chromium.org> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://patch.msgid.link/ZsZa5xRcsLq9D+RX@elsanto
This commit is contained in:
parent
9d301de12d
commit
498365e52b
@ -1627,7 +1627,7 @@ struct host_cmd_ds_802_11_scan_rsp {
|
|||||||
|
|
||||||
struct host_cmd_ds_802_11_scan_ext {
|
struct host_cmd_ds_802_11_scan_ext {
|
||||||
u32 reserved;
|
u32 reserved;
|
||||||
u8 tlv_buffer[1];
|
u8 tlv_buffer[];
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
struct mwifiex_ie_types_bss_mode {
|
struct mwifiex_ie_types_bss_mode {
|
||||||
|
@ -2534,8 +2534,7 @@ int mwifiex_ret_802_11_scan_ext(struct mwifiex_private *priv,
|
|||||||
ext_scan_resp = &resp->params.ext_scan;
|
ext_scan_resp = &resp->params.ext_scan;
|
||||||
|
|
||||||
tlv = (void *)ext_scan_resp->tlv_buffer;
|
tlv = (void *)ext_scan_resp->tlv_buffer;
|
||||||
buf_left = le16_to_cpu(resp->size) - (sizeof(*ext_scan_resp) + S_DS_GEN
|
buf_left = le16_to_cpu(resp->size) - (sizeof(*ext_scan_resp) + S_DS_GEN);
|
||||||
- 1);
|
|
||||||
|
|
||||||
while (buf_left >= sizeof(struct mwifiex_ie_types_header)) {
|
while (buf_left >= sizeof(struct mwifiex_ie_types_header)) {
|
||||||
type = le16_to_cpu(tlv->type);
|
type = le16_to_cpu(tlv->type);
|
||||||
|
Loading…
Reference in New Issue
Block a user