Skip to content

Commit 6fb1f79

Browse files
Restia-Ashbellwwqgtxx
authored andcommitted
fix: handle nil pointer stored in non-nil interface (#2337)
1 parent 99e68e9 commit 6fb1f79

2 files changed

Lines changed: 8 additions & 3 deletions

File tree

adapter/outbound/shadowsocksr.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,13 +252,14 @@ func (spc *ssrPacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr
252252
return nil, nil, nil, errors.New("parse addr error")
253253
}
254254

255-
addr = _addr.UDPAddr()
256-
if addr == nil {
255+
udpAddr := _addr.UDPAddr()
256+
if udpAddr == nil {
257257
if put != nil {
258258
put()
259259
}
260260
return nil, nil, nil, errors.New("parse addr error")
261261
}
262+
addr = udpAddr
262263

263264
data = data[len(_addr):]
264265
return

transport/trojan/trojan.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,11 @@ func (pc *PacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, er
183183
if err != nil {
184184
return nil, nil, nil, err
185185
}
186-
addr = destination.UDPAddr()
186+
udpAddr := destination.UDPAddr()
187+
if udpAddr == nil {
188+
return nil, nil, nil, errors.New("parse addr error")
189+
}
190+
addr = udpAddr
187191

188192
data = pool.Get(pool.UDPBufferSize)
189193
put = func() {

0 commit comments

Comments
 (0)