From 6e40605f1ed4ecce400faae5b41c03995e7f862c Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Tue, 10 Jan 2023 00:30:48 +0000 Subject: [PATCH] Last-ditch maximum size limit for Pegs This makes sure that width * height <= INT_MAX, which it rather needs to be. --- pegs.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pegs.c b/pegs.c index 7a52719..29fe42e 100644 --- a/pegs.c +++ b/pegs.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include "puzzles.h" @@ -182,6 +183,8 @@ static const char *validate_params(const game_params *params, bool full) { if (full && (params->w <= 3 || params->h <= 3)) return "Width and height must both be greater than three"; + if (params->w > INT_MAX / params->h) + return "Width times height must not be unreasonably large"; /* * It might be possible to implement generalisations of Cross @@ -658,7 +661,9 @@ static char *new_game_desc(const game_params *params, random_state *rs, static const char *validate_desc(const game_params *params, const char *desc) { - int len = params->w * params->h; + int len; + + len = params->w * params->h; if (len != strlen(desc)) return "Game description is wrong length";