summaryrefslogtreecommitdiffstats
path: root/0001-rtlwifi-Fix-potential-overflow-on-P2P-code.patch
diff options
context:
space:
mode:
authorLaura Abbott <labbott@redhat.com>2019-10-29 10:07:27 -0400
committerLaura Abbott <labbott@redhat.com>2019-10-29 10:16:27 -0400
commitc2e6631ae783fbb5784692b00492e991e5441930 (patch)
treec191863538d93688362bccf26797286d94640757 /0001-rtlwifi-Fix-potential-overflow-on-P2P-code.patch
parenta275cd7583b76890f24b1ca50227cae0a5001efa (diff)
downloadkernel-c2e6631ae783fbb5784692b00492e991e5441930.tar.gz
kernel-c2e6631ae783fbb5784692b00492e991e5441930.tar.xz
kernel-c2e6631ae783fbb5784692b00492e991e5441930.zip
Linux v5.3.8
Diffstat (limited to '0001-rtlwifi-Fix-potential-overflow-on-P2P-code.patch')
-rw-r--r--0001-rtlwifi-Fix-potential-overflow-on-P2P-code.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/0001-rtlwifi-Fix-potential-overflow-on-P2P-code.patch b/0001-rtlwifi-Fix-potential-overflow-on-P2P-code.patch
new file mode 100644
index 000000000..f8f40bd82
--- /dev/null
+++ b/0001-rtlwifi-Fix-potential-overflow-on-P2P-code.patch
@@ -0,0 +1,52 @@
+From 5d6fc173fd2963e39be890667d5bf3b1fde351dd Mon Sep 17 00:00:00 2001
+From: Laura Abbott <labbott@redhat.com>
+Date: Wed, 16 Oct 2019 16:45:48 -0400
+Subject: [PATCH v2] rtlwifi: Fix potential overflow on P2P code
+To: Ping-Ke Shih <pkshih@realtek.com>
+To: Kalle Valo <kvalo@codeaurora.org>
+Cc: David S. Miller <davem@davemloft.net>
+Cc: linux-wireless@vger.kernel.org
+Cc: netdev@vger.kernel.org
+Cc: linux-kernel@vger.kernel.org
+Cc: Nicolas Waisman <nico@semmle.com>
+
+Nicolas Waisman noticed that even though noa_len is checked for
+a compatible length it's still possible to overrun the buffers
+of p2pinfo since there's no check on the upper bound of noa_num.
+Bound noa_num against P2P_MAX_NOA_NUM.
+
+Reported-by: Nicolas Waisman <nico@semmle.com>
+Signed-off-by: Laura Abbott <labbott@redhat.com>
+---
+v2: Use P2P_MAX_NOA_NUM instead of erroring out.
+---
+ drivers/net/wireless/realtek/rtlwifi/ps.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/drivers/net/wireless/realtek/rtlwifi/ps.c b/drivers/net/wireless/realtek/rtlwifi/ps.c
+index 70f04c2f5b17..fff8dda14023 100644
+--- a/drivers/net/wireless/realtek/rtlwifi/ps.c
++++ b/drivers/net/wireless/realtek/rtlwifi/ps.c
+@@ -754,6 +754,9 @@ static void rtl_p2p_noa_ie(struct ieee80211_hw *hw, void *data,
+ return;
+ } else {
+ noa_num = (noa_len - 2) / 13;
++ if (noa_num > P2P_MAX_NOA_NUM)
++ noa_num = P2P_MAX_NOA_NUM;
++
+ }
+ noa_index = ie[3];
+ if (rtlpriv->psc.p2p_ps_info.p2p_ps_mode ==
+@@ -848,6 +851,9 @@ static void rtl_p2p_action_ie(struct ieee80211_hw *hw, void *data,
+ return;
+ } else {
+ noa_num = (noa_len - 2) / 13;
++ if (noa_num > P2P_MAX_NOA_NUM)
++ noa_num = P2P_MAX_NOA_NUM;
++
+ }
+ noa_index = ie[3];
+ if (rtlpriv->psc.p2p_ps_info.p2p_ps_mode ==
+--
+2.21.0
+