From d8791025492fe0bed8840fd31f190643f5425713 Mon Sep 17 00:00:00 2001 From: Jesse Date: Wed, 26 Feb 2020 21:32:47 +1100 Subject: [PATCH] Minesweeper: Perform sanity check on configuration (#1300) This addresses the issue found in #1261. Previously we weren't doing any form of sanity checking on the values in the configuration file, meaning that a user could input a ridiculous number of mines such that the number of mines is larger than the number of squares on the field. --- Games/Minesweeper/Field.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Games/Minesweeper/Field.cpp b/Games/Minesweeper/Field.cpp index 36d7449672..13b86757c0 100644 --- a/Games/Minesweeper/Field.cpp +++ b/Games/Minesweeper/Field.cpp @@ -156,7 +156,13 @@ Field::Field(GUI::Label& flag_label, GUI::Label& time_label, GUI::Button& face_b int mine_count = config->read_num_entry("Game", "MineCount", 10); int rows = config->read_num_entry("Game", "Rows", 9); int columns = config->read_num_entry("Game", "Columns", 9); - set_field_size(rows, columns, mine_count); + + // Do a quick sanity check to make sure the user hasn't tried anything crazy + if (mine_count > rows * columns || rows <= 0 || columns <= 0 || mine_count <= 0) + set_field_size(9, 9, 10); + else + set_field_size(rows, columns, mine_count); + set_single_chording(single_chording); } }