From f49c299d772b5ab3514802c16d3b021046dbcaf8 Mon Sep 17 00:00:00 2001 From: braginini Date: Tue, 6 Sep 2022 21:07:21 +0200 Subject: [PATCH] Check for stun packet with a fixed size --- iface/bind.go | 2 +- iface/udp_mux.go | 2 +- iface/udp_mux_universal.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/iface/bind.go b/iface/bind.go index 09160d5bd..15f6efe88 100644 --- a/iface/bind.go +++ b/iface/bind.go @@ -114,7 +114,7 @@ func (b *ICEBind) makeReceiveIPv4(c net.PacketConn, bindMux BindMux) conn.Receiv if err != nil { return 0, nil, err } - if !stun.IsMessage(buff[:n]) { + if !stun.IsMessage(buff[:20]) { // WireGuard traffic return n, (*conn.StdNetEndpoint)(&net.UDPAddr{ IP: e.Addr().AsSlice(), diff --git a/iface/udp_mux.go b/iface/udp_mux.go index 040a216e0..da44d521d 100644 --- a/iface/udp_mux.go +++ b/iface/udp_mux.go @@ -85,7 +85,7 @@ func (m *UDPMuxDefault) HandlePacket(p []byte, n int, addr net.Addr) error { m.addressMapMu.Unlock() // If we haven't seen this address before but is a STUN packet lookup by ufrag - if destinationConn == nil && stun.IsMessage(p[:n]) { + if destinationConn == nil && stun.IsMessage(p[:20]) { msg := &stun.Message{ Raw: append([]byte{}, p[:n]...), } diff --git a/iface/udp_mux_universal.go b/iface/udp_mux_universal.go index d33bb4171..f24f66253 100644 --- a/iface/udp_mux_universal.go +++ b/iface/udp_mux_universal.go @@ -80,7 +80,7 @@ func (m *UniversalUDPMuxDefault) Type() string { } func (m *UniversalUDPMuxDefault) HandlePacket(p []byte, n int, addr net.Addr) error { - if stun.IsMessage(p[:n]) { + if stun.IsMessage(p[:20]) { msg := &stun.Message{ Raw: append([]byte{}, p[:n]...), }