5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-11-29 14:21:37 +00:00

Reinstate length/bounds check in tun.go

This commit is contained in:
Neil Alexander 2018-11-06 22:35:28 +00:00
parent 0240375417
commit a3a53f92c3
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944

View File

@ -101,11 +101,11 @@ func (tun *tunDevice) read() error {
if tun.iface.IsTAP() { if tun.iface.IsTAP() {
o = tun_ETHER_HEADER_LENGTH o = tun_ETHER_HEADER_LENGTH
} }
if buf[o]&0xf0 != 0x60 || switch {
n != 256*int(buf[o+4])+int(buf[o+5])+tun_IPv6_HEADER_LENGTH+o { case buf[o]&0xf0 == 0x60 && n == 256*int(buf[o+4])+int(buf[o+5])+tun_IPv6_HEADER_LENGTH+o:
// Either not an IPv6 packet or not the complete packet for some reason case buf[o]&0xf0 == 0x40 && n == 256*int(buf[o+2])+int(buf[o+3])+o:
//panic("Should not happen in testing") default:
//continue continue
} }
if buf[o+6] == 58 { if buf[o+6] == 58 {
// Found an ICMPv6 packet // Found an ICMPv6 packet