(svn r4510) - NewGRF bounds checking:
authorpeter1138
Fri, 21 Apr 2006 20:59:04 +0000
changeset 3614 c697c69b6363
parent 3613 f96401ae2873
child 3615 4afd81377ba3
(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
newgrf.c
newgrf_engine.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:
--- 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;
 }