Removed old copy-paste error
authorNHOrus <jy6x2b32pie9@yahoo.com>
Tue, 5 Sep 2017 14:46:38 +0000 (17:46 +0300)
committerNHOrus <jy6x2b32pie9@yahoo.com>
Tue, 5 Sep 2017 14:46:38 +0000 (17:46 +0300)
Put numdie bounds check in croak to prevent OOB access on negative
numdie while preserving tests

main.c
saveresume.c

diff --git a/main.c b/main.c
index 0556c01f9da86fa92824bfa31fcf2400f3b39b3d..1b725c96c71e8bfedf72b3a3ed5372251e168c0f 100644 (file)
--- a/main.c
+++ b/main.c
@@ -85,7 +85,6 @@ int main(int argc, char *argv[])
                 fprintf(stderr,
                         "advent: can't open save file %s for read\n",
                         optarg);
                 fprintf(stderr,
                         "advent: can't open save file %s for read\n",
                         optarg);
-            signal(SIGINT, sig_handler);
             break;
 #endif
         default:
             break;
 #endif
         default:
@@ -461,6 +460,8 @@ static bool dwarfmove(void)
 static void croak(void)
 /*  Okay, he's dead.  Let's get on with it. */
 {
 static void croak(void)
 /*  Okay, he's dead.  Let's get on with it. */
 {
+    if (game.numdie < 0)
+        game.numdie = 0;
     const char* query = obituaries[game.numdie].query;
     const char* yes_response = obituaries[game.numdie].yes_response;
     ++game.numdie;
     const char* query = obituaries[game.numdie].query;
     const char* yes_response = obituaries[game.numdie].yes_response;
     ++game.numdie;
index c5d51816e3b664029fbf09c6eed7872811663798..799e7af0b90225016ef03bb49150793cb439c529 100644 (file)
@@ -146,9 +146,9 @@ bool is_valid(struct game_t valgame)
     }
 
     /*  Bounds check for locations */
     }
 
     /*  Bounds check for locations */
-    if ( valgame.chloc < -1  || valgame.chloc > NLOCATIONS  ||
-         valgame.chloc2 < -1  || valgame.chloc2 > NLOCATIONS  ||
-         valgame.loc < -1    || valgame.loc > NLOCATIONS    ||
+    if ( 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.oldlc2 < -1 || valgame.oldlc2 > NLOCATIONS) {
          valgame.newloc < -1 || valgame.newloc > NLOCATIONS ||
          valgame.oldloc < -1 || valgame.oldloc > NLOCATIONS ||
          valgame.oldlc2 < -1 || valgame.oldlc2 > NLOCATIONS) {
@@ -171,7 +171,7 @@ bool is_valid(struct game_t valgame)
 
     /*  Bounds check for dwarves */
     if (valgame.dtotal < 0 || valgame.dtotal > NDWARVES ||
 
     /*  Bounds check for dwarves */
     if (valgame.dtotal < 0 || valgame.dtotal > NDWARVES ||
-        valgame.dkill < 0 || valgame.dkill > NDWARVES) {
+        valgame.dkill < 0  || valgame.dkill  > NDWARVES) {
         return false;
     }
 
         return false;
     }