From d71bba1a17d6b228e7dd8b437dccbd3f6bc4698c Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Wed, 11 Jan 2023 23:11:46 +0000 Subject: Limit maximum grid size in Loopy Every grid shape has its own limit, so this involved adding a new interface between loopy.c and grid.c. The limits are based on ensuring that the co-ordinate system of the grid doesn't overflow INT_MAX and neither do the lengths of the face and dot arrays. Though now I come to look at it I think the actual limits of grid.c are much lower. Hmm. --- loopy.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'loopy.c') diff --git a/loopy.c b/loopy.c index 81699c2..2c0dbc6 100644 --- a/loopy.c +++ b/loopy.c @@ -684,6 +684,7 @@ static game_params *custom_params(const config_item *cfg) static const char *validate_params(const game_params *params, bool full) { + const char *err; if (params->type < 0 || params->type >= NUM_GRID_TYPES) return "Illegal grid type"; if (params->w < grid_size_limits[params->type].amin || @@ -692,6 +693,8 @@ static const char *validate_params(const game_params *params, bool full) if (params->w < grid_size_limits[params->type].omin && params->h < grid_size_limits[params->type].omin) return grid_size_limits[params->type].oerr; + err = grid_validate_params(grid_types[params->type], params->w, params->h); + if (err != NULL) return err; /* * This shouldn't be able to happen at all, since decode_params -- cgit v1.1