1
0
Fork 0

Change: [Network] Prevent invalid client names being sent to the server when changing it using the console/settings

pull/9084/head^2
rubidium42 2021-04-22 08:09:36 +02:00 committed by rubidium42
parent bfb0ab3e2f
commit 2e0f3799a8
2 changed files with 13 additions and 1 deletions

View File

@ -716,7 +716,14 @@ DEF_CONSOLE_CMD(ConClientNickChange)
return true;
}
if (!NetworkServerChangeClientName(client_id, argv[2])) {
char *client_name = argv[2];
StrTrimInPlace(client_name);
if (!NetworkIsValidClientName(client_name)) {
IConsoleError("Cannot give a client an empty name");
return true;
}
if (!NetworkServerChangeClientName(client_id, client_name)) {
IConsoleError("Cannot give a client a duplicate name");
}

View File

@ -1308,6 +1308,11 @@ void NetworkUpdateClientName()
NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(_network_own_client_id);
if (ci == nullptr) return;
/* There is no validation on string settings, it is actually a post change callback.
* This method is called from that post change callback. So, when the client name is
* changed via the console there is no easy way to prevent an invalid name. Though,
* we can prevent it getting sent here. */
if (!NetworkValidateClientName()) return;
/* Don't change the name if it is the same as the old name */
if (strcmp(ci->client_name, _settings_client.network.client_name) != 0) {