From d865916a071329ce216c50a2d8b6e6ccbd4fcedd Mon Sep 17 00:00:00 2001 From: glx22 Date: Sat, 23 Nov 2019 14:21:01 +0100 Subject: [PATCH] Fix #7836: Check coherency of NewGRF parameter min/max (#7840) --- src/newgrf.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 9cebb7a592..ce1b2babe6 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -7941,8 +7941,14 @@ static bool ChangeGRFParamLimits(size_t len, ByteReader *buf) grfmsg(2, "StaticGRFInfo: expected 8 bytes for 'INFO'->'PARA'->'LIMI' but got " PRINTF_SIZE ", ignoring this field", len); buf->Skip(len); } else { - _cur_parameter->min_value = buf->ReadDWord(); - _cur_parameter->max_value = buf->ReadDWord(); + uint32 min_value = buf->ReadDWord(); + uint32 max_value = buf->ReadDWord(); + if (min_value <= max_value) { + _cur_parameter->min_value = min_value; + _cur_parameter->max_value = max_value; + } else { + grfmsg(2, "StaticGRFInfo: 'INFO'->'PARA'->'LIMI' values are incoherent, ignoring this field"); + } } return true; }