diff options
author | truelight <truelight@openttd.org> | 2005-01-05 14:39:48 +0000 |
---|---|---|
committer | truelight <truelight@openttd.org> | 2005-01-05 14:39:48 +0000 |
commit | 523a6a1cffd1a7567453835500f387f3499b10a2 (patch) | |
tree | 0321af6b507ef39cda02042c21cc3ae5e417a162 /command.c | |
parent | f1e9fdf76d951dec71c330f12783917cae464160 (diff) | |
download | openttd-523a6a1cffd1a7567453835500f387f3499b10a2.tar.xz |
(svn r1389) -Add: [Network] Added packet protection. No longer a client or server
reads beyond the size of the packet
-Fix: [Network] A server no longer crashes when a client sends an
invalid DoCommand, but drops the client instead.
Diffstat (limited to 'command.c')
-rw-r--r-- | command.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -312,6 +312,17 @@ static CommandProc * const _command_proc_table[] = { CmdReplaceVehicle, /* 114 */ }; +/* This function range-checks a cmd, and checks if the cmd is not NULL */ +bool IsValidCommand(int cmd) +{ + cmd = cmd & 0xFF; + + if (cmd < 0 || cmd >= lengthof(_command_proc_table) || _command_proc_table[cmd] == NULL) + return false; + + return true; +} + int32 DoCommandByTile(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc) { return DoCommand(GET_TILE_X(tile)*16, GET_TILE_Y(tile)*16, p1, p2, flags, procc); |