mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 00:34:20 +08:00
Staging: wlan-ng: skb_p80211_to_ether() - payload_length is unsigned, check before subtraction
payload_length is unsigned, check before subtraction Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
This commit is contained in:
parent
a1da9da991
commit
1f9e9ce1f9
@ -328,11 +328,11 @@ int skb_p80211_to_ether( wlandevice_t *wlandev, u32 ethconv, struct sk_buff *skb
|
|||||||
memcpy(saddr, w_hdr->a3.a2, WLAN_ETHADDR_LEN);
|
memcpy(saddr, w_hdr->a3.a2, WLAN_ETHADDR_LEN);
|
||||||
} else {
|
} else {
|
||||||
payload_offset = WLAN_HDR_A4_LEN;
|
payload_offset = WLAN_HDR_A4_LEN;
|
||||||
payload_length -= ( WLAN_HDR_A4_LEN - WLAN_HDR_A3_LEN );
|
if (payload_length < WLAN_HDR_A4_LEN - WLAN_HDR_A3_LEN) {
|
||||||
if (payload_length < 0 ) {
|
|
||||||
WLAN_LOG_ERROR("A4 frame too short!\n");
|
WLAN_LOG_ERROR("A4 frame too short!\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
payload_length -= (WLAN_HDR_A4_LEN - WLAN_HDR_A3_LEN);
|
||||||
memcpy(daddr, w_hdr->a4.a3, WLAN_ETHADDR_LEN);
|
memcpy(daddr, w_hdr->a4.a3, WLAN_ETHADDR_LEN);
|
||||||
memcpy(saddr, w_hdr->a4.a4, WLAN_ETHADDR_LEN);
|
memcpy(saddr, w_hdr->a4.a4, WLAN_ETHADDR_LEN);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user