From c2b5a3e9df9e532c1803122c25ca8b998ba8fffa Mon Sep 17 00:00:00 2001 From: Pietrodjaowjao Date: Sun, 28 Apr 2024 04:28:09 -0300 Subject: [PATCH] gamedata --- src/Impostor.Server/Net/State/Game.Data.cs | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/Impostor.Server/Net/State/Game.Data.cs b/src/Impostor.Server/Net/State/Game.Data.cs index 4cfd7ae..277cd29 100644 --- a/src/Impostor.Server/Net/State/Game.Data.cs +++ b/src/Impostor.Server/Net/State/Game.Data.cs @@ -230,6 +230,8 @@ namespace Impostor.Server.Net.State { // Sender is only allowed to change his own scene. var clientId = reader.ReadPackedInt32(); + var scene = reader.ReadString(); + if (clientId != sender.Client.Id) { _logger.LogWarning( @@ -239,7 +241,17 @@ namespace Impostor.Server.Net.State return false; } - sender.Scene = reader.ReadString(); + // According to game assembly, sender is only allowed to send OnlineGame. + if (scene != "OnlineGame") + { + _logger.LogWarning( + "Player {0} ({1}) tried to send SceneChangeFlag with disallowed scene.", + sender.Client.Name, + sender.Client.Id); + return false; + } + + sender.Scene = scene; _logger.LogTrace("> Scene {0} to {1}", clientId, sender.Scene); break; @@ -248,6 +260,15 @@ namespace Impostor.Server.Net.State case GameDataTag.ReadyFlag: { var clientId = reader.ReadPackedInt32(); + + if (clientId != sender.Client.Id) + { + _logger.LogWarning( + "Player {0} ({1}) tried to send ReadyFlag for another player.", + sender.Client.Name, + sender.Client.Id); + } + _logger.LogTrace("> IsReady {0}", clientId); break; } -- 2.39.5