mirror of
https://github.com/slackhq/nebula.git
synced 2026-08-15 06:17:03 +02:00
iputil: fix infinite loop in ipv6FindUpperProtocol from uint8 extension-header length overflow (#1784)
This commit is contained in:
+2
-2
@@ -344,7 +344,7 @@ func ipv6FindUpperProtocol(packet []byte) (nextHeader uint8, offset int, isFragm
|
|||||||
return nextHeader, offset, isFragment
|
return nextHeader, offset, isFragment
|
||||||
}
|
}
|
||||||
nextHeader = packet[offset]
|
nextHeader = packet[offset]
|
||||||
offset += int(packet[offset+1]+1) << 3
|
offset += (int(packet[offset+1]) + 1) << 3
|
||||||
|
|
||||||
case 44: // Fragment
|
case 44: // Fragment
|
||||||
if len(packet) < offset+8 {
|
if len(packet) < offset+8 {
|
||||||
@@ -361,7 +361,7 @@ func ipv6FindUpperProtocol(packet []byte) (nextHeader uint8, offset int, isFragm
|
|||||||
return nextHeader, offset, isFragment
|
return nextHeader, offset, isFragment
|
||||||
}
|
}
|
||||||
nextHeader = packet[offset]
|
nextHeader = packet[offset]
|
||||||
offset += int(packet[offset+1]+2) << 2
|
offset += (int(packet[offset+1]) + 2) << 2
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nextHeader, offset, isFragment
|
return nextHeader, offset, isFragment
|
||||||
|
|||||||
Reference in New Issue
Block a user