From 32ce5139774af2468216dc67a0124b066bd6fd45 Mon Sep 17 00:00:00 2001 From: wwqgtxx Date: Wed, 3 Dec 2025 22:49:31 +0800 Subject: [PATCH] chore: discard domain addr input in sudoku uot --- transport/sudoku/address.go | 3 ++- transport/sudoku/uot.go | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/transport/sudoku/address.go b/transport/sudoku/address.go index 4a666a23..48b32296 100644 --- a/transport/sudoku/address.go +++ b/transport/sudoku/address.go @@ -5,6 +5,7 @@ import ( "fmt" "io" "net" + "strconv" ) func EncodeAddress(rawAddr string) ([]byte, error) { @@ -13,7 +14,7 @@ func EncodeAddress(rawAddr string) ([]byte, error) { return nil, err } - portInt, err := net.LookupPort("udp", portStr) + portInt, err := strconv.ParseUint(portStr, 10, 16) if err != nil { return nil, err } diff --git a/transport/sudoku/uot.go b/transport/sudoku/uot.go index 8b03b09b..be3fe900 100644 --- a/transport/sudoku/uot.go +++ b/transport/sudoku/uot.go @@ -7,6 +7,8 @@ import ( "fmt" "io" "net" + "net/netip" + "strconv" "sync" "time" @@ -109,11 +111,14 @@ func (c *UoTPacketConn) ReadFrom(p []byte) (int, net.Addr, error) { return 0, nil, io.ErrShortBuffer } - udpAddr, err := net.ResolveUDPAddr("udp", addrStr) - if err != nil { + host, port, _ := net.SplitHostPort(addrStr) + portInt, _ := strconv.ParseUint(port, 10, 16) + ip, err := netip.ParseAddr(host) + if err != nil { // disallow domain addr at here, just ignore log.Debugln("[Sudoku][UoT] discard datagram with invalid address %s: %v", addrStr, err) continue } + udpAddr := net.UDPAddrFromAddrPort(netip.AddrPortFrom(ip.Unmap(), uint16(portInt))) copy(p, payload) return len(payload), udpAddr, nil