Fix: Check station ID is within bounds when copying layouts.

This commit is contained in:
Peter Nelson
2023-04-06 20:29:59 +01:00
committed by Charles Pigott
parent 4c756159fd
commit 67bd6ab0ad

View File

@@ -1999,7 +1999,7 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte
case 0x0A: { // Copy sprite layout
byte srcid = buf->ReadByte();
const StationSpec *srcstatspec = _cur.grffile->stations[srcid];
const StationSpec *srcstatspec = srcid >= NUM_STATIONS_PER_GRF ? nullptr : _cur.grffile->stations[srcid];
if (srcstatspec == nullptr) {
grfmsg(1, "StationChangeInfo: Station %u is not defined, cannot copy sprite layout to %u.", srcid, stid + i);
@@ -2053,7 +2053,7 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte
case 0x0F: { // Copy custom layout
byte srcid = buf->ReadByte();
const StationSpec *srcstatspec = _cur.grffile->stations[srcid];
const StationSpec *srcstatspec = srcid >= NUM_STATIONS_PER_GRF ? nullptr : _cur.grffile->stations[srcid];
if (srcstatspec == nullptr) {
grfmsg(1, "StationChangeInfo: Station %u is not defined, cannot copy tile layout to %u.", srcid, stid + i);