Skip to content

Commit ff82109

Browse files
szymonhkuba-moo
authored andcommitted
net: usb: smsc95xx: Limit packet length to skb->len
Packet length retrieved from descriptor may be larger than the actual socket buffer length. In such case the cloned skb passed up the network stack will leak kernel memory contents. Fixes: 2f7ca80 ("net: Add SMSC LAN9500 USB2.0 10/100 ethernet adapter driver") Signed-off-by: Szymon Heidrich <szymon.heidrich@gmail.com> Reviewed-by: Jakub Kicinski <kuba@kernel.org> Link: https://lore.kernel.org/r/20230316101954.75836-1-szymon.heidrich@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 30796d0 commit ff82109

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

drivers/net/usb/smsc95xx.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1833,6 +1833,12 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
18331833
size = (u16)((header & RX_STS_FL_) >> 16);
18341834
align_count = (4 - ((size + NET_IP_ALIGN) % 4)) % 4;
18351835

1836+
if (unlikely(size > skb->len)) {
1837+
netif_dbg(dev, rx_err, dev->net,
1838+
"size err header=0x%08x\n", header);
1839+
return 0;
1840+
}
1841+
18361842
if (unlikely(header & RX_STS_ES_)) {
18371843
netif_dbg(dev, rx_err, dev->net,
18381844
"Error header=0x%08x\n", header);

0 commit comments

Comments
 (0)