diff options
author | planetmaker <planetmaker@openttd.org> | 2013-07-12 17:11:16 +0000 |
---|---|---|
committer | planetmaker <planetmaker@openttd.org> | 2013-07-12 17:11:16 +0000 |
commit | 2e390613a6c5854b62215ada489ef0c792a6507f (patch) | |
tree | 064e65ab70328914f86b1c99a5d71c9d6e33dd14 /src | |
parent | 7686587f02ff76bb7d6f899b989701adeda5b6e4 (diff) | |
download | openttd-2e390613a6c5854b62215ada489ef0c792a6507f.tar.xz |
(svn r25589) -Fix [FS#5646]: Ensure that sent and received length of json strings are the same (based on patch by Xaroth)
Diffstat (limited to 'src')
-rw-r--r-- | src/network/core/config.h | 2 | ||||
-rw-r--r-- | src/network/network_admin.cpp | 8 |
2 files changed, 5 insertions, 5 deletions
diff --git a/src/network/core/config.h b/src/network/core/config.h index cbe4f5d74..08a93ea70 100644 --- a/src/network/core/config.h +++ b/src/network/core/config.h @@ -48,7 +48,7 @@ static const uint NETWORK_PASSWORD_LENGTH = 33; ///< The maximum lengt static const uint NETWORK_CLIENTS_LENGTH = 200; ///< The maximum length for the list of clients that controls a company, in bytes including '\0' static const uint NETWORK_CLIENT_NAME_LENGTH = 25; ///< The maximum length of a client's name, in bytes including '\0' static const uint NETWORK_RCONCOMMAND_LENGTH = 500; ///< The maximum length of a rconsole command, in bytes including '\0' -static const uint NETWORK_GAMESCRIPT_JSON_LENGTH = 1450; ///< The maximum length of a gamescript json string, in bytes including '\0' +static const uint NETWORK_GAMESCRIPT_JSON_LENGTH = SEND_MTU - 3; ///< The maximum length of a gamescript json string, in bytes including '\0'. Must not be longer than SEND_MTU including header (3 bytes) static const uint NETWORK_CHAT_LENGTH = 900; ///< The maximum length of a chat message, in bytes including '\0' static const uint NETWORK_GRF_NAME_LENGTH = 80; ///< Maximum length of the name of a GRF diff --git a/src/network/network_admin.cpp b/src/network/network_admin.cpp index 326559e0b..0c060b755 100644 --- a/src/network/network_admin.cpp +++ b/src/network/network_admin.cpp @@ -579,10 +579,10 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendConsole(const char *origi */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendGameScript(const char *json) { - /* At the moment we cannot transmit anything larger than MTU. So the string - * has to be no longer than the length of the json + '\0' + 3 bytes of the - * packet header. */ - if (strlen(json) + 1 + 3 >= SEND_MTU) return NETWORK_RECV_STATUS_OKAY; + /* At the moment we cannot transmit anything larger than MTU. So we limit + * the maximum amount of json data that can be sent. Account also for + * the trailing \0 of the string */ + if (strlen(json) + 1 >= NETWORK_GAMESCRIPT_JSON_LENGTH) return NETWORK_RECV_STATUS_OKAY; Packet *p = new Packet(ADMIN_PACKET_SERVER_GAMESCRIPT); |