fix: array bound crashes on clans.

This commit is contained in:
Houmgaor
2025-10-21 00:21:50 +02:00
parent 060635e422
commit 73e874f43f
6 changed files with 413 additions and 10 deletions

View File

@@ -86,7 +86,18 @@ func encodeServerInfo(config *_config.Config, s *Server, local bool) []byte {
}
}
bf.WriteUint32(uint32(channelserver.TimeAdjusted().Unix()))
bf.WriteUint32(uint32(s.erupeConfig.GameplayOptions.ClanMemberLimits[len(s.erupeConfig.GameplayOptions.ClanMemberLimits)-1][1]))
// ClanMemberLimits requires at least 1 element with 2 columns to avoid index out of range panics
// Use default value (60) if array is empty or last row is too small
var maxClanMembers uint8 = 60
if len(s.erupeConfig.GameplayOptions.ClanMemberLimits) > 0 {
lastRow := s.erupeConfig.GameplayOptions.ClanMemberLimits[len(s.erupeConfig.GameplayOptions.ClanMemberLimits)-1]
if len(lastRow) > 1 {
maxClanMembers = lastRow[1]
}
}
bf.WriteUint32(uint32(maxClanMembers))
return bf.Data()
}