aboutsummaryrefslogtreecommitdiff
path: root/bridges.c
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2009-06-17 20:01:45 +0000
committerSimon Tatham <anakin@pobox.com>2009-06-17 20:01:45 +0000
commit0687980f0c3204d283848ba41761a7724e4a6168 (patch)
treefb454b19acbc55db35dd3087648d2dc0de52f0bb /bridges.c
parent3cd83d05e899e62232b68ea95cf7f07505ebd79f (diff)
downloadpuzzles-0687980f0c3204d283848ba41761a7724e4a6168.zip
puzzles-0687980f0c3204d283848ba41761a7724e4a6168.tar.gz
puzzles-0687980f0c3204d283848ba41761a7724e4a6168.tar.bz2
puzzles-0687980f0c3204d283848ba41761a7724e4a6168.tar.xz
Memory management and other fixes from James H.
[originally from svn r8596]
Diffstat (limited to 'bridges.c')
-rw-r--r--bridges.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/bridges.c b/bridges.c
index 694f011..64501ef 100644
--- a/bridges.c
+++ b/bridges.c
@@ -2244,6 +2244,8 @@ static game_state *execute_move(game_state *state, char *move)
if (sscanf(move, "%d,%d,%d,%d,%d%n",
&x1, &y1, &x2, &y2, &nl, &n) != 5)
goto badmove;
+ if (!INGRID(ret, x1, y1) || !INGRID(ret, x2, y2))
+ goto badmove;
is1 = INDEX(ret, gridi, x1, y1);
is2 = INDEX(ret, gridi, x2, y2);
if (!is1 || !is2) goto badmove;
@@ -2253,6 +2255,8 @@ static game_state *execute_move(game_state *state, char *move)
if (sscanf(move, "%d,%d,%d,%d%n",
&x1, &y1, &x2, &y2, &n) != 4)
goto badmove;
+ if (!INGRID(ret, x1, y1) || !INGRID(ret, x2, y2))
+ goto badmove;
is1 = INDEX(ret, gridi, x1, y1);
is2 = INDEX(ret, gridi, x2, y2);
if (!is1 || !is2) goto badmove;
@@ -2261,6 +2265,8 @@ static game_state *execute_move(game_state *state, char *move)
if (sscanf(move, "%d,%d%n",
&x1, &y1, &n) != 2)
goto badmove;
+ if (!INGRID(ret, x1, y1))
+ goto badmove;
is1 = INDEX(ret, gridi, x1, y1);
if (!is1) goto badmove;
island_togglemark(is1);