Skip to content

Commit 76638d7

Browse files
ksco.heyuhan6665
ksco.he
authored andcommitted
fix(udp): check addr nil (close 1807)
1 parent b673147 commit 76638d7

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

transport/internet/udp/hub_freebsd.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"encoding/gob"
99
"io"
1010

11+
"github.com/xtls/xray-core/common/errors"
1112
"github.com/xtls/xray-core/common/net"
1213
"github.com/xtls/xray-core/transport/internet"
1314
)
@@ -30,7 +31,14 @@ func ReadUDPMsg(conn *net.UDPConn, payload []byte, oob []byte) (int, int, int, *
3031
nBytes, addr, err := conn.ReadFromUDP(payload)
3132
var buf bytes.Buffer
3233
enc := gob.NewEncoder(&buf)
33-
enc.Encode(conn.LocalAddr().(*net.UDPAddr))
34+
udpAddr, ok := conn.LocalAddr().(*net.UDPAddr)
35+
if !ok {
36+
return 0, 0, 0, nil, errors.New("invalid local address")
37+
}
38+
if addr == nil {
39+
return 0, 0, 0, nil, errors.New("invalid remote address")
40+
}
41+
enc.Encode(udpAddr)
3442
enc.Encode(addr)
3543
var reader io.Reader = &buf
3644
noob, _ := reader.Read(oob)

0 commit comments

Comments
 (0)