mirror of
https://github.com/drygdryg/rtl8188eus.git
synced 2025-04-29 02:37:16 +09:00
fix arbitrary restriction to inject only packets with length 12 radiotap hdr
This commit is contained in:
parent
ac49179314
commit
e48f66942d
@ -4355,7 +4355,7 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev)
|
|||||||
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
|
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
|
||||||
unsigned char *pframe;
|
unsigned char *pframe;
|
||||||
u8 dummybuf[32];
|
u8 dummybuf[32];
|
||||||
int len = skb->len, rtap_len;
|
int len = skb->len, rtap_len, consume;
|
||||||
|
|
||||||
if (skb)
|
if (skb)
|
||||||
rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize);
|
rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize);
|
||||||
@ -4372,12 +4372,15 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev)
|
|||||||
if (unlikely(skb->len < rtap_len))
|
if (unlikely(skb->len < rtap_len))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
if (rtap_len != 12) {
|
len -= sizeof(struct ieee80211_radiotap_header);
|
||||||
RTW_INFO("radiotap len (should be 14): %d\n", rtap_len);
|
rtap_len -= sizeof(struct ieee80211_radiotap_header);
|
||||||
goto fail;
|
|
||||||
|
while(rtap_len) {
|
||||||
|
consume = rtap_len > sizeof(dummybuf) ? sizeof(dummybuf) : rtap_len;
|
||||||
|
_rtw_pktfile_read(&pktfile, dummybuf, consume);
|
||||||
|
rtap_len -= consume;
|
||||||
|
len -= consume;
|
||||||
}
|
}
|
||||||
_rtw_pktfile_read(&pktfile, dummybuf, rtap_len-sizeof(struct ieee80211_radiotap_header));
|
|
||||||
len = len - rtap_len;
|
|
||||||
|
|
||||||
pmgntframe = alloc_mgtxmitframe(pxmitpriv);
|
pmgntframe = alloc_mgtxmitframe(pxmitpriv);
|
||||||
if (pmgntframe == NULL) {
|
if (pmgntframe == NULL) {
|
||||||
|
@ -4286,11 +4286,6 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_de
|
|||||||
if (unlikely(skb->len < rtap_len))
|
if (unlikely(skb->len < rtap_len))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
if (rtap_len != 14) {
|
|
||||||
RTW_INFO("radiotap len (should be 14): %d\n", rtap_len);
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Skip the ratio tap header */
|
/* Skip the ratio tap header */
|
||||||
skb_pull(skb, rtap_len);
|
skb_pull(skb, rtap_len);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user