mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
mwifiex: Fix possible buffer overflows at parsing bss descriptor
[ Upstream commit 13ec7f10b8 ]
mwifiex_update_bss_desc_with_ie() calls memcpy() unconditionally in
a couple places without checking the destination size. Since the
source is given from user-space, this may trigger a heap buffer
overflow.
Fix it by putting the length check before performing memcpy().
This fix addresses CVE-2019-3846.
Reported-by: huangwen <huangwen@venustech.com.cn>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
ad3ce30069
commit
d50f6b58d7
@@ -1244,6 +1244,8 @@ int mwifiex_update_bss_desc_with_ie(struct mwifiex_adapter *adapter,
|
||||
}
|
||||
switch (element_id) {
|
||||
case WLAN_EID_SSID:
|
||||
if (element_len > IEEE80211_MAX_SSID_LEN)
|
||||
return -EINVAL;
|
||||
bss_entry->ssid.ssid_len = element_len;
|
||||
memcpy(bss_entry->ssid.ssid, (current_ptr + 2),
|
||||
element_len);
|
||||
@@ -1253,6 +1255,8 @@ int mwifiex_update_bss_desc_with_ie(struct mwifiex_adapter *adapter,
|
||||
break;
|
||||
|
||||
case WLAN_EID_SUPP_RATES:
|
||||
if (element_len > MWIFIEX_SUPPORTED_RATES)
|
||||
return -EINVAL;
|
||||
memcpy(bss_entry->data_rates, current_ptr + 2,
|
||||
element_len);
|
||||
memcpy(bss_entry->supported_rates, current_ptr + 2,
|
||||
|
||||
Reference in New Issue
Block a user