From: miniduikboot Date: Wed, 21 Jul 2021 19:53:22 +0000 (+0200) Subject: Check client version when parsing C2S handshake X-Git-Tag: v1.6.0^2~3 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=3065e8df48e340e960199bfc557618233dd352f5;p=rhonda%2Fimpostor.git Check client version when parsing C2S handshake 2021.6.30 added new fields, which aren't present on old clients. This commit makes sure players on old versions are disconnected properly instead of the server erroring internally. --- diff --git a/src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs b/src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs index 8b93792..62ad375 100644 --- a/src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs +++ b/src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs @@ -9,8 +9,20 @@ namespace Impostor.Api.Net.Messages.C2S clientVersion = reader.ReadInt32(); name = reader.ReadString(); lastNonceReceived = reader.ReadUInt32(); - language = (Language)reader.ReadUInt32(); - chatMode = (QuickChatModes)reader.ReadByte(); + + // Version 2021.6.30 (aka 50537300) is the first version that includes language and chat modes + // In case the game is older than that, stop reading here. + if (clientVersion >= 50537300) + { + language = (Language)reader.ReadUInt32(); + chatMode = (QuickChatModes)reader.ReadByte(); + } + else + { + // This is an old version of Among Us and will fail later in the handshake due to a version mismatch + language = Language.English; + chatMode = QuickChatModes.FreeChatOrQuickChat; + } } } }