More security checks

This actually looks pretty bad, not gonna lie.
This commit is contained in:
juanjp600
2016-08-28 19:54:31 -03:00
parent b51afdd0cb
commit 73fc0cf724
4 changed files with 23 additions and 6 deletions
+1 -1
View File
@@ -1702,7 +1702,7 @@ namespace Barotrauma
{ {
data = null; data = null;
if (GameMain.Server != null && type != NetworkEventType.InventoryUpdate) if (GameMain.Server != null && (type != NetworkEventType.InventoryUpdate || (!IsUnconscious && !IsDead)))
{ {
Client sender = GameMain.Server.ConnectedClients.Find(c => c.Connection == message.SenderConnection); Client sender = GameMain.Server.ConnectedClients.Find(c => c.Connection == message.SenderConnection);
if (sender == null || sender.Character != this) if (sender == null || sender.Character != this)
@@ -487,6 +487,10 @@ namespace Barotrauma.Items.Components
public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message, float sendingTime) public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message, float sendingTime)
{ {
if (sendingTime < lastReceivedMessage) return; if (sendingTime < lastReceivedMessage) return;
if (GameMain.Server != null)
{
return;
}
lastReceivedMessage = sendingTime; lastReceivedMessage = sendingTime;
+10 -1
View File
@@ -1732,14 +1732,23 @@ namespace Barotrauma
{ {
return false; return false;
} }
Drop(sender.Character, false);
if (body != null)
{
body.TargetPosition = sender.Character.SimPosition;
body.MoveToTargetPosition();
} }
}
else
{
//client should not tell the server where the item should drop
Drop(null, false); Drop(null, false);
if (body != null) if (body != null)
{ {
body.ReadNetworkData(message, sendingTime); body.ReadNetworkData(message, sendingTime);
body.MoveToTargetPosition(); body.MoveToTargetPosition();
} }
}
break; break;
case NetworkEventType.PhysicsBodyPosition: case NetworkEventType.PhysicsBodyPosition:
//clients don't have authority over item positions //clients don't have authority over item positions
+4
View File
@@ -395,6 +395,10 @@ namespace Barotrauma
public void ReadNetworkData(NetIncomingMessage message, float sendingTime) public void ReadNetworkData(NetIncomingMessage message, float sendingTime)
{ {
if (GameMain.Server != null)
{
return;
}
if (sendingTime < lastNetworkUpdateTime) return; if (sendingTime < lastNetworkUpdateTime) return;
Vector2 newTargetPos = Vector2.Zero; Vector2 newTargetPos = Vector2.Zero;