(svn r13712) -Fix: enforce the length restrictions of company and president name in the commands too.

This commit is contained in:
rubidium 2008-07-17 11:19:20 +00:00
parent 88848d78b5
commit 2e4f32023c
6 changed files with 12 additions and 5 deletions

View File

@ -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);

View File

@ -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'

View File

@ -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;

View File

@ -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

View File

@ -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: {

View File

@ -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;