From 047f6a096c83c2f0f65479e5e85d3bc733fbaede Mon Sep 17 00:00:00 2001 From: Darkvater Date: Sat, 7 May 2005 10:26:45 +0000 Subject: (svn r2280) - Fix: Check if the passed tile to DoCommand is within the current mapsize --- command.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'command.c') diff --git a/command.c b/command.c index 22b6af6d4..f7c0f5cc1 100644 --- a/command.c +++ b/command.c @@ -177,6 +177,7 @@ static CommandProc * const _command_proc_table[] = { CmdBuildSingleSignal, /* 8 */ CmdRemoveSingleSignal, /* 9 */ CmdTerraformLand, /* 10 */ + /***************************************************/ CmdPurchaseLandArea, /* 11 */ CmdSellLandArea, /* 12 */ CmdBuildTunnel, /* 13 */ @@ -331,6 +332,9 @@ int32 DoCommand(int x, int y, uint32 p1, uint32 p2, uint32 flags, uint procc) int32 res; CommandProc *proc; + /* Do not even think about executing out-of-bounds tile-commands */ + if (TILE_FROM_XY(x,y) > MapSize()) return CMD_ERROR; + proc = _command_proc_table[procc]; if (_docommand_recursive == 0) { @@ -399,6 +403,9 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, int x = TileX(tile) * 16; int y = TileY(tile) * 16; + /* Do not even think about executing out-of-bounds tile-commands */ + if (tile > MapSize()) return false; + assert(_docommand_recursive == 0); _error_message = INVALID_STRING_ID; -- cgit v1.2.3-54-g00ecf