On Tue, 2019-11-05 at 14:08 +0800, pkshih@xxxxxxxxxxx wrote: > From: Laura Abbott <labbott@xxxxxxxxxx> > > commit 8c55dedb795be8ec0cf488f98c03a1c2176f7fb1 upstream. > > 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@xxxxxxxxxx> > Signed-off-by: Laura Abbott <labbott@xxxxxxxxxx> > Acked-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx> > Signed-off-by: Kalle Valo <kvalo@xxxxxxxxxxxxxx> > --- > This fix is applied to most of stable kernel excepting to 3.16 due to > directory change on kernel 4.4. So, I compose this patch with old directory > for stable kernel 3.16. Thanks for this. I actually got round to backporting this myself before seeing your mail, so this ended up 3.16.77. Ben. > --- > drivers/net/wireless/rtlwifi/ps.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/net/wireless/rtlwifi/ps.c b/drivers/net/wireless/rtlwifi/ps.c > index 50504942ded1..bfe097b224ad 100644 > --- a/drivers/net/wireless/rtlwifi/ps.c > +++ b/drivers/net/wireless/rtlwifi/ps.c > @@ -801,6 +801,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 == > @@ -895,6 +898,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 == -- Ben Hutchings If the facts do not conform to your theory, they must be disposed of.
Attachment:
signature.asc
Description: This is a digitally signed message part