From 49d28f2204dfbb21156d98b0313399c8126b59e0 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Thu, 21 Oct 2021 20:39:09 +0100 Subject: [PATCH] Tents: fix bias in tent placement. In the very first stage of game generation, we're supposed to pick 1/5 of the grid squares to put tents in, in a uniformly random manner. It failed to be uniform, because I had the wrong limit in random_upto - but it was too small rather than too large, so it never overran the buffer in a way that something like ASan or valgrind would have caught. --- tents.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tents.c b/tents.c index 5eb34b0..8b93653 100644 --- a/tents.c +++ b/tents.c @@ -998,7 +998,7 @@ static char *new_game_desc(const game_params *params_in, random_state *rs, int dy, dx; bool ok = true; - which = i + random_upto(rs, j); + which = i + random_upto(rs, w*h - i); tmp = order[which]; order[which] = order[i]; order[i] = tmp;