# HG changeset patch # User peter1138 # Date 1145653144 0 # Node ID c697c69b636343f415c2fc79ef35055d099225c7 # Parent f96401ae2873b4622c56e5ee0bf8c31c6d328c0f (svn r4510) - NewGRF bounds checking: - check Engine ID is within range - don't try setting a vehicle name if the string id is not a valid Engine ID diff -r f96401ae2873 -r c697c69b6363 newgrf.c --- a/newgrf.c Fri Apr 21 20:25:34 2006 +0000 +++ b/newgrf.c Fri Apr 21 20:59:04 2006 +0000 @@ -1761,9 +1761,11 @@ case GSF_TRAIN: case GSF_ROAD: case GSF_SHIP: - case GSF_AIRCRAFT: - SetCustomEngineName(id, AddGRFString(_cur_grffile->grfid, id, lang, name)); + case GSF_AIRCRAFT: { + StringID string = AddGRFString(_cur_grffile->grfid, id, lang, name); + if (id < TOTAL_NUM_ENGINES) SetCustomEngineName(id, string); break; + } #if 0 case GSF_STATION: diff -r f96401ae2873 -r c697c69b6363 newgrf_engine.c --- a/newgrf_engine.c Fri Apr 21 20:25:34 2006 +0000 +++ b/newgrf_engine.c Fri Apr 21 20:59:04 2006 +0000 @@ -102,6 +102,7 @@ void SetCustomEngineSprites(EngineID engine, byte cargo, SpriteGroup *group) { + assert(engine < TOTAL_NUM_ENGINES); if (engine_custom_sprites[engine][cargo] != NULL) { DEBUG(grf, 6)("SetCustomEngineSprites: engine `%d' cargo `%d' already has group -- replacing.", engine, cargo); } @@ -610,6 +611,7 @@ void SetCustomEngineName(EngineID engine, StringID name) { + assert(engine < lengthof(_engine_custom_names)); _engine_custom_names[engine] = name; }