From 83bb6fa63275a9516d9f0d2e7cd82e3895c80af2 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 4 Sep 2026 11:46:51 +0200 Subject: [PATCH] Fix missing network messages reading init to avoid crashes on incorrect message --- Source/Engine/Networking/NetworkManager.cpp | 6 ++-- .../Engine/Networking/NetworkReplicator.cpp | 34 +++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Source/Engine/Networking/NetworkManager.cpp b/Source/Engine/Networking/NetworkManager.cpp index 35254f06e..783b9fa95 100644 --- a/Source/Engine/Networking/NetworkManager.cpp +++ b/Source/Engine/Networking/NetworkManager.cpp @@ -273,7 +273,7 @@ void NetworkMessage::ReadNetworkName(StringAnsiView& name) void OnNetworkMessageHandshake(NetworkEvent& event, NetworkClient* client, NetworkPeer* peer) { // Read client connection data - NetworkMessageHandshake msgData; + NetworkMessageHandshake msgData = {}; event.Message.ReadStructure(msgData); NetworkClientConnectionData connectionData; connectionData.Client = client; @@ -319,7 +319,7 @@ void OnNetworkMessageHandshake(NetworkEvent& event, NetworkClient* client, Netwo void OnNetworkMessageHandshakeReply(NetworkEvent& event, NetworkClient* client, NetworkPeer* peer) { ASSERT_LOW_LAYER(NetworkManager::IsClient()); - NetworkMessageHandshakeReply msgData; + NetworkMessageHandshakeReply msgData = {}; event.Message.ReadStructure(msgData); if (msgData.Result != 0) { @@ -340,7 +340,7 @@ void OnNetworkMessageHandshakeReply(NetworkEvent& event, NetworkClient* client, void OnNetworkMessageKey(NetworkEvent& event, NetworkClient* client, NetworkPeer* peer) { // Read key data - NetworkMessageKey msgData; + NetworkMessageKey msgData = {}; event.Message.ReadStructure(msgData); Guid id; StringAnsiView name; diff --git a/Source/Engine/Networking/NetworkReplicator.cpp b/Source/Engine/Networking/NetworkReplicator.cpp index e7c05144b..83b09d4a5 100644 --- a/Source/Engine/Networking/NetworkReplicator.cpp +++ b/Source/Engine/Networking/NetworkReplicator.cpp @@ -2205,9 +2205,9 @@ void NetworkInternal::NetworkReplicatorUpdate() void NetworkInternal::OnNetworkMessageObjectReplicate(NetworkEvent& event, NetworkClient* client, NetworkPeer* peer) { PROFILE_CPU(); - NetworkMessageObjectReplicate msgData; - NetworkMessageObjectPartPayload msgDataPayload; - Guid objectId, parentId; + NetworkMessageObjectReplicate msgData = {}; + NetworkMessageObjectPartPayload msgDataPayload = {}; + Guid objectId = Guid::Empty, parentId = Guid::Empty; StringAnsiView objectTypeName; event.Message.ReadStructure(msgData); event.Message.ReadNetworkId(objectId); @@ -2243,8 +2243,8 @@ void NetworkInternal::OnNetworkMessageObjectReplicate(NetworkEvent& event, Netwo void NetworkInternal::OnNetworkMessageObjectReplicatePart(NetworkEvent& event, NetworkClient* client, NetworkPeer* peer) { PROFILE_CPU(); - NetworkMessageObjectPart msgData; - Guid objectId; + NetworkMessageObjectPart msgData = {}; + Guid objectId = Guid::Empty; event.Message.ReadStructure(msgData); event.Message.ReadNetworkId(objectId); ScopeLock lock(ObjectsLock); @@ -2258,8 +2258,8 @@ void NetworkInternal::OnNetworkMessageObjectReplicatePart(NetworkEvent& event, N void NetworkInternal::OnNetworkMessageObjectSpawn(NetworkEvent& event, NetworkClient* client, NetworkPeer* peer) { PROFILE_CPU(); - NetworkMessageObjectSpawn msgData; - Guid prefabId; + NetworkMessageObjectSpawn msgData = {}; + Guid prefabId = Guid::Empty; event.Message.ReadStructure(msgData); event.Message.ReadNetworkId(prefabId); if (msgData.ItemsCount == 0) @@ -2284,7 +2284,7 @@ void NetworkInternal::OnNetworkMessageObjectSpawn(NetworkEvent& event, NetworkCl void NetworkInternal::OnNetworkMessageObjectSpawnPart(NetworkEvent& event, NetworkClient* client, NetworkPeer* peer) { PROFILE_CPU(); - NetworkMessageObjectSpawnPart msgData; + NetworkMessageObjectSpawnPart msgData = {}; event.Message.ReadStructure(msgData); int32 spawnPartsIndex; for (spawnPartsIndex = 0; spawnPartsIndex < SpawnParts.Count(); spawnPartsIndex++) @@ -2322,8 +2322,8 @@ void NetworkInternal::OnNetworkMessageObjectSpawnPart(NetworkEvent& event, Netwo void NetworkInternal::OnNetworkMessageObjectDespawn(NetworkEvent& event, NetworkClient* client, NetworkPeer* peer) { PROFILE_CPU(); - NetworkMessageObjectDespawn msgData; - Guid objectId; + NetworkMessageObjectDespawn msgData = {}; + Guid objectId = Guid::Empty; event.Message.ReadStructure(msgData); event.Message.ReadNetworkId(objectId); ScopeLock lock(ObjectsLock); @@ -2360,8 +2360,8 @@ void NetworkInternal::OnNetworkMessageObjectDespawn(NetworkEvent& event, Network void NetworkInternal::OnNetworkMessageObjectRole(NetworkEvent& event, NetworkClient* client, NetworkPeer* peer) { PROFILE_CPU(); - NetworkMessageObjectRole msgData; - Guid objectId; + NetworkMessageObjectRole msgData = {}; + Guid objectId = Guid::Empty; event.Message.ReadStructure(msgData); event.Message.ReadNetworkId(objectId); ScopeLock lock(ObjectsLock); @@ -2410,9 +2410,9 @@ void NetworkInternal::OnNetworkMessageObjectRole(NetworkEvent& event, NetworkCli void NetworkInternal::OnNetworkMessageObjectRpc(NetworkEvent& event, NetworkClient* client, NetworkPeer* peer) { PROFILE_CPU(); - NetworkMessageObjectRpc msgData; - NetworkMessageObjectPartPayload msgDataPayload; - Guid objectId, parentId; + NetworkMessageObjectRpc msgData = {}; + NetworkMessageObjectPartPayload msgDataPayload = {}; + Guid objectId = Guid::Empty, parentId = Guid::Empty; StringAnsiView objectTypeName, rpcTypeName, rpcName; event.Message.ReadStructure(msgData); event.Message.ReadNetworkId(objectId); @@ -2477,8 +2477,8 @@ void NetworkInternal::OnNetworkMessageObjectRpc(NetworkEvent& event, NetworkClie void NetworkInternal::OnNetworkMessageObjectRpcPart(NetworkEvent& event, NetworkClient* client, NetworkPeer* peer) { PROFILE_CPU(); - NetworkMessageObjectPart msgData; - Guid objectId; + NetworkMessageObjectPart msgData = {}; + Guid objectId = Guid::Empty; event.Message.ReadStructure(msgData); event.Message.ReadNetworkId(objectId); ScopeLock lock(ObjectsLock);