Browse Source

WebSocketServer now sanitize destination peers.

When relaying messages in multiplayer mode.
Could cause a crash in case a malicious client sends a bogus packet and
for those cases where a peer has just disconnected and a message arrive
from another peer with the disconnected one as destination.
Fabio Alessandrelli 6 years ago
parent
commit
17be67b8c7
1 changed files with 4 additions and 1 deletions
  1. 4 1
      modules/websocket/websocket_multiplayer_peer.cpp

+ 4 - 1
modules/websocket/websocket_multiplayer_peer.cpp

@@ -265,7 +265,10 @@ Error WebSocketMultiplayerPeer::_server_relay(int32_t p_from, int32_t p_to, cons
 
 
 		ERR_FAIL_COND_V(p_to == p_from, FAILED);
 		ERR_FAIL_COND_V(p_to == p_from, FAILED);
 
 
-		return get_peer(p_to)->put_packet(p_buffer, p_buffer_size); // Sending to specific peer
+		Ref<WebSocketPeer> peer_to = get_peer(p_to);
+		ERR_FAIL_COND_V(peer_to.is_null(), FAILED);
+
+		return peer_to->put_packet(p_buffer, p_buffer_size); // Sending to specific peer
 	}
 	}
 }
 }