mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
sniffer: fix accidental logging of good packets as bad
We need to check vv.Size() instead of len(tcp), as tcp will always be 20 bytes long. PiperOrigin-RevId: 310218351
This commit is contained in:
committed by
gVisor bot
parent
4631de620a
commit
b08222cf3a
@@ -391,7 +391,7 @@ func logPacket(prefix string, protocol tcpip.NetworkProtocolNumber, pkt *stack.P
|
||||
break
|
||||
}
|
||||
udp := header.UDP(hdr)
|
||||
if fragmentOffset == 0 && len(udp) >= header.UDPMinimumSize {
|
||||
if fragmentOffset == 0 {
|
||||
srcPort = udp.SourcePort()
|
||||
dstPort = udp.DestinationPort()
|
||||
details = fmt.Sprintf("xsum: 0x%x", udp.Checksum())
|
||||
@@ -405,14 +405,14 @@ func logPacket(prefix string, protocol tcpip.NetworkProtocolNumber, pkt *stack.P
|
||||
break
|
||||
}
|
||||
tcp := header.TCP(hdr)
|
||||
if fragmentOffset == 0 && len(tcp) >= header.TCPMinimumSize {
|
||||
if fragmentOffset == 0 {
|
||||
offset := int(tcp.DataOffset())
|
||||
if offset < header.TCPMinimumSize {
|
||||
details += fmt.Sprintf("invalid packet: tcp data offset too small %d", offset)
|
||||
break
|
||||
}
|
||||
if offset > len(tcp) && !moreFragments {
|
||||
details += fmt.Sprintf("invalid packet: tcp data offset %d larger than packet buffer length %d", offset, len(tcp))
|
||||
if offset > vv.Size() && !moreFragments {
|
||||
details += fmt.Sprintf("invalid packet: tcp data offset %d larger than packet buffer length %d", offset, vv.Size())
|
||||
break
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user