Browse Source

Add check to validate client IDs in ENet.

Server now checks that the ID received from the client is not already
used by someone else and is a valid ID (>=2)
Fabio Alessandrelli 6 years ago
parent
commit
dc583a6225
1 changed files with 7 additions and 0 deletions
  1. 7 0
      modules/enet/networked_multiplayer_enet.cpp

+ 7 - 0
modules/enet/networked_multiplayer_enet.cpp

@@ -231,6 +231,13 @@ void NetworkedMultiplayerENet::poll() {
 					break;
 					break;
 				}
 				}
 
 
+				// A client joined with an invalid ID (neagtive values, 0, and 1 are reserved).
+				// Probably trying to exploit us.
+				if (server && ((int)event.data < 2 || peer_map.has((int)event.data))) {
+					enet_peer_reset(event.peer);
+					ERR_CONTINUE(true);
+				}
+
 				int *new_id = memnew(int);
 				int *new_id = memnew(int);
 				*new_id = event.data;
 				*new_id = event.data;