Mercurial > hg > openttd
changeset 3614:dd7bdfb96303 draft
(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
author | peter1138 <peter1138@openttd.org> |
---|---|
date | Fri, 21 Apr 2006 20:59:04 +0000 |
parents | 643dcd9f97a5 |
children | 7227a7501092 |
files | newgrf.c newgrf_engine.c |
diffstat | 2 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/newgrf.c +++ b/newgrf.c @@ -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:
--- a/newgrf_engine.c +++ b/newgrf_engine.c @@ -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; }