mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-02-15 04:42:02 +00:00
43 lines
1.9 KiB
Diff
43 lines
1.9 KiB
Diff
From 2bd1d78eb073d46bbfc0ca625581b772c1bee087 Mon Sep 17 00:00:00 2001
|
|
From: Kevin Cernekee <cernekee@chromium.org>
|
|
Date: Sat, 16 Sep 2017 21:08:22 -0700
|
|
Subject: [PATCH 143/277] brcmfmac: Avoid possible out-of-bounds read
|
|
|
|
In brcmf_p2p_notify_rx_mgmt_p2p_probereq(), chanspec is assigned before
|
|
the length of rxframe is validated. This could lead to uninitialized
|
|
data being accessed (but not printed). Since we already have a
|
|
perfectly good endian-swapped copy of rxframe->chanspec in ch.chspec,
|
|
and ch.chspec is not modified by decchspec(), avoid the extra
|
|
assignment and use ch.chspec in the debug print.
|
|
|
|
Suggested-by: Mattias Nissler <mnissler@chromium.org>
|
|
Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
|
|
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
---
|
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 3 +--
|
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
|
index 2ce675ab40ef..1c450c0727cb 100644
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
|
@@ -1853,7 +1853,6 @@ s32 brcmf_p2p_notify_rx_mgmt_p2p_probereq(struct brcmf_if *ifp,
|
|
struct afx_hdl *afx_hdl = &p2p->afx_hdl;
|
|
struct brcmf_cfg80211_vif *vif = ifp->vif;
|
|
struct brcmf_rx_mgmt_data *rxframe = (struct brcmf_rx_mgmt_data *)data;
|
|
- u16 chanspec = be16_to_cpu(rxframe->chanspec);
|
|
struct brcmu_chan ch;
|
|
u8 *mgmt_frame;
|
|
u32 mgmt_frame_len;
|
|
@@ -1906,7 +1905,7 @@ s32 brcmf_p2p_notify_rx_mgmt_p2p_probereq(struct brcmf_if *ifp,
|
|
cfg80211_rx_mgmt(&vif->wdev, freq, 0, mgmt_frame, mgmt_frame_len, 0);
|
|
|
|
brcmf_dbg(INFO, "mgmt_frame_len (%d) , e->datalen (%d), chanspec (%04x), freq (%d)\n",
|
|
- mgmt_frame_len, e->datalen, chanspec, freq);
|
|
+ mgmt_frame_len, e->datalen, ch.chspec, freq);
|
|
|
|
return 0;
|
|
}
|
|
--
|
|
2.16.1
|
|
|