From 2d1cbc916fe7f3400e55920cf57a4ad7a28e3d36 Mon Sep 17 00:00:00 2001 From: Ted John Date: Thu, 21 Jul 2016 19:51:06 +0100 Subject: [PATCH] Check for valid colour presets on vehicle game command Fixes an issue some people were getting on servers where clients were somehow sending invalid preset IDs for a given ride entry. --- src/ride/ride.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ride/ride.c b/src/ride/ride.c index 3ae38be5da..069d3caeac 100644 --- a/src/ride/ride.c +++ b/src/ride/ride.c @@ -7799,6 +7799,14 @@ static money32 ride_set_vehicles(uint8 rideIndex, uint8 setting, uint8 value, ui if (!(flags & GAME_COMMAND_FLAG_NETWORKED)) { preset = ride_get_unused_preset_vehicle_colour(ride->type, ride->subtype); } + + // Validate preset + vehicle_colour_preset_list *presetList = rideEntry->vehicle_preset_list; + if (preset >= presetList->count) { + log_error("Unknown vehicle colour preset."); + return MONEY32_UNDEFINED; + } + ride_set_vehicle_colours_to_random_preset(ride, preset); if (!gCheatsDisableTrainLengthLimit) { ride->proposed_num_cars_per_train = clamp(rideEntry->min_cars_in_train, ride->proposed_num_cars_per_train, rideEntry->max_cars_in_train);