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;
 }