diff options
author | rubidium <rubidium@openttd.org> | 2008-07-17 11:19:20 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-07-17 11:19:20 +0000 |
commit | 2e4f32023c8f8bb5e116d3779f1c90a33a823008 (patch) | |
tree | 99f9e6d200177e3369eb4e755598004f5bb54e2f | |
parent | 88848d78b5715854cf7788a83e83edeb084c9a9b (diff) | |
download | openttd-2e4f32023c8f8bb5e116d3779f1c90a33a823008.tar.xz |
(svn r13712) -Fix: enforce the length restrictions of company and president name in the commands too.
-rw-r--r-- | src/misc_cmd.cpp | 4 | ||||
-rw-r--r-- | src/network/core/config.h | 1 | ||||
-rw-r--r-- | src/network/network.cpp | 1 | ||||
-rw-r--r-- | src/network/network_type.h | 2 | ||||
-rw-r--r-- | src/player_gui.cpp | 4 | ||||
-rw-r--r-- | src/player_type.h | 5 |
6 files changed, 12 insertions, 5 deletions
diff --git a/src/misc_cmd.cpp b/src/misc_cmd.cpp index 0b06a718d..6c4f2f9f7 100644 --- a/src/misc_cmd.cpp +++ b/src/misc_cmd.cpp @@ -225,7 +225,7 @@ static bool IsUniqueCompanyName(const char *name) */ CommandCost CmdChangeCompanyName(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) { - if (StrEmpty(_cmd_text)) return CMD_ERROR; + if (StrEmpty(_cmd_text) || strlen(_cmd_text) > MAX_LENGTH_COMPANY_NAME) return CMD_ERROR; if (!IsUniqueCompanyName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE); @@ -262,7 +262,7 @@ static bool IsUniquePresidentName(const char *name) */ CommandCost CmdChangePresidentName(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) { - if (StrEmpty(_cmd_text)) return CMD_ERROR; + if (StrEmpty(_cmd_text) || strlen(_cmd_text) > MAX_LENGTH_PRESIDENT_NAME) return CMD_ERROR; if (!IsUniquePresidentName(_cmd_text)) return_cmd_error(STR_NAME_MUST_BE_UNIQUE); diff --git a/src/network/core/config.h b/src/network/core/config.h index 63ffb1c79..0a950d1f1 100644 --- a/src/network/core/config.h +++ b/src/network/core/config.h @@ -24,6 +24,7 @@ enum { NETWORK_MASTER_SERVER_VERSION = 1, ///< What version of master-server-protocol do we use? NETWORK_NAME_LENGTH = 80, ///< The maximum length of the server name and map name, in bytes including '\0' + NETWORK_COMPANY_NAME_LENGTH = 32, ///< The maximum length of the company name, in bytes including '\0' NETWORK_HOSTNAME_LENGTH = 80, ///< The maximum length of the host name, in bytes including '\0' NETWORK_UNIQUE_ID_LENGTH = 33, ///< The maximum length of the unique id of the clients, in bytes including '\0' NETWORK_REVISION_LENGTH = 15, ///< The maximum length of the revision, in bytes including '\0' diff --git a/src/network/network.cpp b/src/network/network.cpp index 56fe67e85..cd0b91408 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -70,6 +70,7 @@ uint8 _network_advertise_retries; /* Check whether NETWORK_NUM_LANDSCAPES is still in sync with NUM_LANDSCAPE */ assert_compile((int)NETWORK_NUM_LANDSCAPES == (int)NUM_LANDSCAPE); +assert_compile((int)NETWORK_COMPANY_NAME_LENGTH == MAX_LENGTH_COMPANY_NAME + 1); // global variables (declared in network_data.h) CommandPacket *_local_command_queue; diff --git a/src/network/network_type.h b/src/network/network_type.h index 17bf382dc..c05033696 100644 --- a/src/network/network_type.h +++ b/src/network/network_type.h @@ -35,7 +35,7 @@ enum { }; struct NetworkPlayerInfo { - char company_name[NETWORK_NAME_LENGTH]; ///< Company name + char company_name[NETWORK_COMPANY_NAME_LENGTH]; ///< Company name char password[NETWORK_PASSWORD_LENGTH]; ///< The password for the player Year inaugurated_year; ///< What year the company started in Money company_value; ///< The company value diff --git a/src/player_gui.cpp b/src/player_gui.cpp index 8f1b558da..c0abfad8c 100644 --- a/src/player_gui.cpp +++ b/src/player_gui.cpp @@ -1252,13 +1252,13 @@ struct PlayerCompanyWindow : Window case PCW_WIDGET_PRESIDENT_NAME: this->query_widget = PCW_WIDGET_PRESIDENT_NAME; SetDParam(0, this->window_number); - ShowQueryString(STR_PLAYER_NAME, STR_700B_PRESIDENT_S_NAME, 31, 94, this, CS_ALPHANUMERAL); + ShowQueryString(STR_PLAYER_NAME, STR_700B_PRESIDENT_S_NAME, MAX_LENGTH_PRESIDENT_NAME, 94, this, CS_ALPHANUMERAL); break; case PCW_WIDGET_COMPANY_NAME: this->query_widget = PCW_WIDGET_COMPANY_NAME; SetDParam(0, this->window_number); - ShowQueryString(STR_COMPANY_NAME, STR_700A_COMPANY_NAME, 31, 150, this, CS_ALPHANUMERAL); + ShowQueryString(STR_COMPANY_NAME, STR_700A_COMPANY_NAME, MAX_LENGTH_COMPANY_NAME, 150, this, CS_ALPHANUMERAL); break; case PCW_WIDGET_BUILD_VIEW_HQ: { diff --git a/src/player_type.h b/src/player_type.h index bf33923be..79d92f691 100644 --- a/src/player_type.h +++ b/src/player_type.h @@ -30,6 +30,11 @@ enum Owner { }; DECLARE_POSTFIX_INCREMENT(Owner); +enum { + MAX_LENGTH_PRESIDENT_NAME = 31, ///< The maximum length for a president's name + MAX_LENGTH_COMPANY_NAME = 31, ///< The maximum length for a company's name +}; + /** Define basic enum properties */ template <> struct EnumPropsT<Owner> : MakeEnumPropsT<Owner, byte, OWNER_BEGIN, OWNER_END, INVALID_OWNER> {}; typedef TinyEnumT<Owner> OwnerByte; |