From c3306de2eeb7d4b9869ea68b460cf87d6fd986f1 Mon Sep 17 00:00:00 2001 From: wish Date: Sat, 18 Feb 2023 10:43:47 +1100 Subject: [PATCH] fix gacha rewards overflowing --- server/channelserver/handlers_shop_gacha.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/channelserver/handlers_shop_gacha.go b/server/channelserver/handlers_shop_gacha.go index 955c19e7e..7119592f6 100644 --- a/server/channelserver/handlers_shop_gacha.go +++ b/server/channelserver/handlers_shop_gacha.go @@ -600,7 +600,8 @@ func handleMsgMhfReceiveGachaItem(s *Session, p mhfpacket.MHFPacket) { data = []byte{0x00} } - if data[0] > 36 { + // I think there are still some edge cases where rewards can be nulled via overflow + if data[0] > 36 || len(data) > 181 { resp := byteframe.NewByteFrame() resp.WriteUint8(36) resp.WriteBytes(data[1:181]) @@ -610,7 +611,7 @@ func handleMsgMhfReceiveGachaItem(s *Session, p mhfpacket.MHFPacket) { } if !pkt.Freeze { - if data[0] > 36 { + if data[0] > 36 || len(data) > 181 { update := byteframe.NewByteFrame() update.WriteUint8(uint8(len(data[181:]) / 5)) update.WriteBytes(data[181:])