]> git.deb.at Git - rhonda/impostor.git/commitdiff
gamedata
authorPietrodjaowjao <nicoleobenetti@gmail.com>
Sun, 28 Apr 2024 07:28:09 +0000 (04:28 -0300)
committerPietrodjaowjao <nicoleobenetti@gmail.com>
Sun, 28 Apr 2024 07:28:09 +0000 (04:28 -0300)
src/Impostor.Server/Net/State/Game.Data.cs

index 4cfd7aed5e5fa5995bc0dae25f36a4e6584b3c85..277cd29fd12f1fe90042095e5343a6b4e9cff2a3 100644 (file)
@@ -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;
                     }