From 3337d7fc0d0174a21a9a37f5cd28a8ce9100f3bc Mon Sep 17 00:00:00 2001 From: mkwcat Date: Fri, 5 Jan 2024 18:55:53 -0500 Subject: [PATCH] GPCM: Fix error on empty match data --- gpcm/friend.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gpcm/friend.go b/gpcm/friend.go index fc88b84..e2ef772 100644 --- a/gpcm/friend.go +++ b/gpcm/friend.go @@ -318,6 +318,10 @@ func (g *GameSpySession) bestieMessage(command common.GameSpyCommand) { switch version { case 3: + if len(msg) == msgDataIndex { + break + } + for _, stringValue := range strings.Split(msg[msgDataIndex:], "/") { intValue, err := strconv.ParseUint(stringValue, 10, 32) if err != nil { @@ -330,6 +334,10 @@ func (g *GameSpySession) bestieMessage(command common.GameSpyCommand) { } case 11: + if len(msg) == msgDataIndex { + break + } + for _, stringValue := range strings.Split(msg[msgDataIndex:], "/") { byteValue, err := hex.DecodeString(stringValue) if err != nil || len(byteValue) != 4 { @@ -342,6 +350,10 @@ func (g *GameSpySession) bestieMessage(command common.GameSpyCommand) { } case 90: + if len(msg) == msgDataIndex { + break + } + msgData, err = common.Base64DwcEncoding.DecodeString(msg[msgDataIndex:]) if err != nil { logging.Error(g.ModuleName, "Invalid message base64 data; message:", msg)