Prevent tampering with PRNG parameters in save
[open-adventure.git] / saveresume.c
index fdb9ffb2fbafdca479db816fc0efde60f2fde7bc..c5d51816e3b664029fbf09c6eed7872811663798 100644 (file)
@@ -139,13 +139,19 @@ 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.chloc < -1  || valgame.chloc > NLOCATIONS  ||
+         valgame.chloc2 < -1  || valgame.chloc2 > NLOCATIONS  ||
          valgame.loc < -1    || valgame.loc > NLOCATIONS    ||
          valgame.newloc < -1 || valgame.newloc > NLOCATIONS ||
          valgame.oldloc < -1 || valgame.oldloc > NLOCATIONS ||
-         valgame.oldloc < -1 || valgame.oldloc > NLOCATIONS) {
+         valgame.oldlc2 < -1 || valgame.oldlc2 > NLOCATIONS) {
         return false;
     }
     /*  Bounds check for location arrays */