fix: 修复非 gateway 数据包导致数组越界的问题

This commit is contained in:
kercylan98 2023-08-22 14:07:48 +08:00
parent 89c32b4ce3
commit 5096e6f884
1 changed files with 12 additions and 7 deletions

View File

@ -630,17 +630,22 @@ func (slf *Server) dispatchMessage(msg *Message) {
var conn = attrs[0].(*Conn) var conn = attrs[0].(*Conn)
var packet = attrs[1].([]byte) var packet = attrs[1].([]byte)
var wst = int(packet[len(packet)-1]) var wst = int(packet[len(packet)-1])
var ct = packet[len(packet)-2] if len(packet) >= 2 {
if ct == 0xff { var ct = packet[len(packet)-2]
var gp GP if ct == 0xff {
if err := super.UnmarshalJSON(packet[:len(packet)-2], &gp); err != nil { var gp GP
panic(err) if err := super.UnmarshalJSON(packet[:len(packet)-2], &gp); err != nil {
panic(err)
}
packet = gp.D
conn = newGatewayConn(conn, gp.C)
} else {
packet = packet[:len(packet)-1]
} }
packet = gp.D
conn = newGatewayConn(conn, gp.C)
} else { } else {
packet = packet[:len(packet)-1] packet = packet[:len(packet)-1]
} }
if !slf.OnConnectionPacketPreprocessEvent(conn, packet, func(newPacket []byte) { packet = newPacket }) { if !slf.OnConnectionPacketPreprocessEvent(conn, packet, func(newPacket []byte) { packet = newPacket }) {
slf.OnConnectionReceivePacketEvent(conn, Packet{Data: packet, WebsocketType: wst}) slf.OnConnectionReceivePacketEvent(conn, Packet{Data: packet, WebsocketType: wst})
} }