From: Christian Heller Date: Fri, 22 Aug 2014 01:19:17 +0000 (+0200) Subject: Server: In actor_move() avoid illegal world.map.cells access. X-Git-Tag: tce~644 X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/%7B%7B%20web_path%20%7D%7D/%7B%7Bdb.prefix%7D%7D/do_day?a=commitdiff_plain;h=1896cf512d3ba5c66a9534b8b3bf791006afcc93;p=plomrogue Server: In actor_move() avoid illegal world.map.cells access. --- diff --git a/src/server/thing_actions.c b/src/server/thing_actions.c index 6f72544..638bbd3 100644 --- a/src/server/thing_actions.c +++ b/src/server/thing_actions.c @@ -262,8 +262,10 @@ extern void actor_move(struct Thing * t) struct yx_uint8 target = t->pos; uint8_t legal_move = mv_yx_in_dir_legal(d, &target); mv_yx_in_dir_legal(0, NULL); + uint8_t passable = 0; if (legal_move) { + passable = '.' == world.map.cells[target.y*world.map.length + target.x]; for (other_t = world.things; other_t != 0; other_t = other_t->next) { if (0 == other_t->lifepoints || other_t == t) @@ -277,8 +279,6 @@ extern void actor_move(struct Thing * t) } } } - char target_cell = world.map.cells[target.y * world.map.length + target.x]; - uint8_t passable = legal_move && '.' == target_cell; if (passable) { set_thing_position(t, target);