diff options
author | Laura Abbott <labbott@redhat.com> | 2019-10-21 14:58:44 -0400 |
---|---|---|
committer | Laura Abbott <labbott@redhat.com> | 2019-10-21 14:58:44 -0400 |
commit | 3ca9f3d998b5bb35bb335152d3fe652af7476c22 (patch) | |
tree | 9e3473fa470710bebab08d7aa1b21f6885dbe6ec /0001-rtlwifi-Fix-potential-overflow-on-P2P-code.patch | |
parent | cd74d7acd33b240b69494f32b72a29c122f94b5a (diff) | |
download | kernel-3ca9f3d998b5bb35bb335152d3fe652af7476c22.tar.gz kernel-3ca9f3d998b5bb35bb335152d3fe652af7476c22.tar.xz kernel-3ca9f3d998b5bb35bb335152d3fe652af7476c22.zip |
Fix CVE-2019-17666 (rhbz 1763692)
Diffstat (limited to '0001-rtlwifi-Fix-potential-overflow-on-P2P-code.patch')
-rw-r--r-- | 0001-rtlwifi-Fix-potential-overflow-on-P2P-code.patch | 52 |
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 + |