From b3cde077fcbdfcadcf0c3ec83f0b10c5b21a88c3 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 1 Jan 2018 12:37:15 +0000 Subject: [PATCH] Don't break the order stream if a frozen actor refers to a bogus player. --- OpenRA.Game/Network/Order.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/OpenRA.Game/Network/Order.cs b/OpenRA.Game/Network/Order.cs index e5ba7aff6d..7f6bf3fe33 100644 --- a/OpenRA.Game/Network/Order.cs +++ b/OpenRA.Game/Network/Order.cs @@ -107,15 +107,18 @@ namespace OpenRA case TargetType.FrozenActor: { + var playerActorID = r.ReadUInt32(); + var frozenActorID = r.ReadUInt32(); + Actor playerActor; - if (world == null || !TryGetActorFromUInt(world, r.ReadUInt32(), out playerActor)) + if (world == null || !TryGetActorFromUInt(world, playerActorID, out playerActor)) break; var frozenLayer = playerActor.TraitOrDefault(); if (frozenLayer == null) break; - var frozen = frozenLayer.FromID(r.ReadUInt32()); + var frozen = frozenLayer.FromID(frozenActorID); if (frozen != null) target = Target.FromFrozenActor(frozen);