diff options
author | Darkvater <Darkvater@openttd.org> | 2005-05-07 10:26:45 +0000 |
---|---|---|
committer | Darkvater <Darkvater@openttd.org> | 2005-05-07 10:26:45 +0000 |
commit | 047f6a096c83c2f0f65479e5e85d3bc733fbaede (patch) | |
tree | 90b5a07f12f1132f12b5b50e90b683007e4b5823 | |
parent | 419af5cecebec58262323c3a870bdaac61da2e66 (diff) | |
download | openttd-047f6a096c83c2f0f65479e5e85d3bc733fbaede.tar.xz |
(svn r2280) - Fix: Check if the passed tile to DoCommand is within the current mapsize
-rw-r--r-- | command.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -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; |