Browse Source

Socks: Fix buffer full panic when encoding large UDP packets (#5252)

Co-authored-by: 风扇滑翔翼 <[email protected]>
vemneyy 2 weeks ago
parent
commit
b16a5f03fe
1 changed files with 5 additions and 0 deletions
  1. 5 0
      proxy/socks/protocol.go

+ 5 - 0
proxy/socks/protocol.go

@@ -353,6 +353,11 @@ func EncodeUDPPacket(request *protocol.RequestHeader, data []byte) (*buf.Buffer,
 		b.Release()
 		return nil, err
 	}
+	// if data is too large, return an empty buffer (drop too big data)
+	if b.Available() < int32(len(data)) {
+		b.Clear()
+		return b, nil
+	}
 	common.Must2(b.Write(data))
 	return b, nil
 }