From 756034fa279bb6c3b81efbe13385583eb8a42d0f Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 2 May 2021 10:47:05 +0100 Subject: Codechange: Validate custom station platform layout tiles are permitted values only. --- src/newgrf.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index a2671eff2..3a4fe1261 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -1991,6 +1991,14 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte const byte *layout = buf->ReadBytes(length * number); statspec->layouts[length - 1][number - 1].assign(layout, layout + length * number); + + /* Validate tile values are only the permitted 00, 02, 04 and 06. */ + for (auto &tile : statspec->layouts[length - 1][number - 1]) { + if ((tile & 6) != tile) { + grfmsg(1, "StationChangeInfo: Invalid tile %u in layout %ux%u", tile, length, number); + tile &= 6; + } + } } break; -- cgit v1.2.3-70-g09d2