ref: 91735e5019be84d2fa693c5d40746c818ace28f8
parent: 1af1204b9c33c9c03b2e0fe66c2f07d9729cbc72
author: Ben Harris <bjh21@bjh21.me.uk>
date: Fri Mar 31 16:38:31 EDT 2023
Correct a range check in Magnets' layout verification Squares in the grid are numbered from 0, so the upper limit check needs to use "<=" rather than "<". Without this, invalid descriptions can cause a read overrun off the end of the board.
--- a/magnets.c
+++ b/magnets.c
@@ -520,7 +520,7 @@
* (i.e. each end points to the other) */
for (idx = 0; idx < state->wh; idx++) {
if (state->common->dominoes[idx] < 0 ||
- state->common->dominoes[idx] > state->wh ||
+ state->common->dominoes[idx] >= state->wh ||
state->common->dominoes[state->common->dominoes[idx]] != idx) {
*prob = "Domino descriptions inconsistent";
goto done;