(svn r2965) Fix: newgrf: Add bounds checking to VehicleChangeInfo for vehicles and change
authorpeter1138
Tue, 20 Sep 2005 11:07:33 +0000
changeset 2439 b4962381b5b5
parent 2438 f0bf4adbd620
child 2440 d0c69700c72e
(svn r2965) Fix: newgrf: Add bounds checking to VehicleChangeInfo for vehicles and change
station special case to vehicle special case.
newgrf.c
--- a/newgrf.c	Tue Sep 20 09:38:09 2005 +0000
+++ b/newgrf.c	Tue Sep 20 11:07:33 2005 +0000
@@ -1046,10 +1046,13 @@
 		return;
 	}
 
-	if (feature != GSF_STATION)
+	if (feature <= GSF_AIRCRAFT) {
+		if (engine + numinfo > _vehcounts[feature]) {
+			grfmsg(GMS_ERROR, "VehicleChangeInfo: Last engine ID %d out of bounds (max %d), skipping.", engine + numinfo, _vehcounts[feature]);
+			return;
+		}
 		ei = &_engine_info[engine + _vehshifts[feature]];
-	/* XXX - Should there not be a check to see if 'ei' is NULL
-	    when it is used in the switch below?? -- TrueLight */
+	}
 
 	buf += 5;