From e5a0c6e2b723186e452747bccef5f3386ce2f2f9 Mon Sep 17 00:00:00 2001 From: NHOrus Date: Thu, 24 Aug 2017 14:48:02 +0300 Subject: [PATCH] Prevent tampering with PRNG parameters in save --- main.c | 3 --- saveresume.c | 6 ++++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/main.c b/main.c index 0f245a2..0556c01 100644 --- a/main.c +++ b/main.c @@ -1175,9 +1175,6 @@ Lookup: default: // LCOV_EXCL_LINE BUG(VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3); // LCOV_EXCL_LINE } - if (!is_valid(game)) { - exit(1); - } switch (action(command)) { case GO_TERMINATE: return true; diff --git a/saveresume.c b/saveresume.c index cf1dd6c..c5d5181 100644 --- a/saveresume.c +++ b/saveresume.c @@ -139,6 +139,12 @@ bool is_valid(struct game_t valgame) return false; } + /* Prevent RNG substitution. Why we are saving PRNG parameters? */ + + if (valgame.lcg_a != game.lcg_a || valgame.lcg_c != game.lcg_c || valgame.lcg_m != game.lcg_m) { + return false; + } + /* Bounds check for locations */ if ( valgame.chloc < -1 || valgame.chloc > NLOCATIONS || valgame.chloc2 < -1 || valgame.chloc2 > NLOCATIONS || -- 2.31.1