(svn r4679) - Backport from trunk (r4521): 0.4
authorDarkvater
Tue, 02 May 2006 13:47:00 +0000
branch0.4
changeset 9993 3952f4789a9b
parent 9992 36665e9fb144
child 9994 c45aa2513ffb
(svn r4679) - Backport from trunk (r4521):
Fix: be consistent about the size of the player-name in MP. This
hopefully fixes a crash on lesser OS's (eg Win98)
network.c
network.h
network_server.c
network_server.h
--- a/network.c	Tue May 02 13:44:41 2006 +0000
+++ b/network.c	Tue May 02 13:47:00 2006 +0000
@@ -96,11 +96,11 @@
 //  if the user did not send it yet, Client #<no> is used.
 void NetworkGetClientName(char *client_name, size_t size, const NetworkClientState *cs)
 {
-	NetworkClientInfo *ci = DEREF_CLIENT_INFO(cs);
-	if (ci->client_name[0] == '\0')
-		snprintf(client_name, size, "Client #%d", cs->index);
+	const NetworkClientInfo *ci = DEREF_CLIENT_INFO(cs);
+	if (*ci->client_name == '\0')
+		snprintf(client_name, size, "Client #%4d", cs->index);
 	else
-		snprintf(client_name, size, "%s", ci->client_name);
+		ttd_strlcpy(client_name, ci->client_name, size);
 }
 
 byte NetworkSpectatorCount(void)
@@ -549,7 +549,7 @@
 		// We did not receive a leave message from this client...
 		NetworkErrorCode errorno = NETWORK_ERROR_CONNECTION_LOST;
 		char str[100];
-		char client_name[NETWORK_NAME_LENGTH];
+		char client_name[NETWORK_CLIENT_NAME_LENGTH];
 		NetworkClientState *new_cs;
 
 		NetworkGetClientName(client_name, sizeof(client_name), cs);
--- a/network.h	Tue May 02 13:44:41 2006 +0000
+++ b/network.h	Tue May 02 13:47:00 2006 +0000
@@ -145,7 +145,7 @@
 VARDEF NetworkPlayerInfo _network_player_info[MAX_PLAYERS];
 VARDEF NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
 
-VARDEF char _network_player_name[NETWORK_NAME_LENGTH];
+VARDEF char _network_player_name[NETWORK_CLIENT_NAME_LENGTH];
 VARDEF char _network_default_ip[NETWORK_HOSTNAME_LENGTH];
 
 VARDEF uint16 _network_own_client_index;
--- a/network_server.c	Tue May 02 13:44:41 2006 +0000
+++ b/network_server.c	Tue May 02 13:47:00 2006 +0000
@@ -575,7 +575,7 @@
 
 DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_JOIN)
 {
-	char name[NETWORK_NAME_LENGTH];
+	char name[NETWORK_CLIENT_NAME_LENGTH];
 	char unique_id[NETWORK_NAME_LENGTH];
 	NetworkClientInfo *ci;
 	byte playas;
@@ -620,7 +620,7 @@
 	}
 
 	// We need a valid name.. make it Player
-	if (name[0] == '\0') snprintf(name, sizeof(name), "Player");
+	if (*name == '\0') ttd_strlcpy(name, "Player", sizeof(name));
 
 	if (!NetworkFindName(name)) { // Change name if duplicate
 		// We could not create a name for this player
@@ -630,8 +630,8 @@
 
 	ci = DEREF_CLIENT_INFO(cs);
 
-	snprintf(ci->client_name, sizeof(ci->client_name), "%s", name);
-	snprintf(ci->unique_id, sizeof(ci->unique_id), "%s", unique_id);
+	ttd_strlcpy(ci->client_name, name, sizeof(ci->client_name));
+	ttd_strlcpy(ci->unique_id, unique_id, sizeof(ci->unique_id));
 	ci->client_playas = playas;
 	ci->client_lang = client_lang;
 
@@ -1434,7 +1434,7 @@
 	byte number = 0;
 	char original_name[NETWORK_CLIENT_NAME_LENGTH];
 
-	// We use NETWORK_NAME_LENGTH in here, because new_name is really a pointer
+	// We use NETWORK_CLIENT_NAME_LENGTH in here, because new_name is really a pointer
 	ttd_strlcpy(original_name, new_name, NETWORK_CLIENT_NAME_LENGTH);
 
 	while (!found_name) {
--- a/network_server.h	Tue May 02 13:44:41 2006 +0000
+++ b/network_server.h	Tue May 02 13:47:00 2006 +0000
@@ -12,7 +12,7 @@
 DEF_SERVER_SEND_COMMAND(PACKET_SERVER_NEWGAME);
 DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_RCON)(NetworkClientState *cs, uint16 color, const char *command);
 
-bool NetworkFindName(char new_name[NETWORK_NAME_LENGTH]);
+bool NetworkFindName(char new_name[NETWORK_CLIENT_NAME_LENGTH]);
 void NetworkServer_HandleChat(NetworkAction action, DestType desttype, int dest, const char *msg, uint16 from_index);
 
 bool NetworkServer_ReadPackets(NetworkClientState *cs);