From 1f2eec13ddcd45c1bab9a983a16e43dd6e0b44e9 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Mon, 11 May 2020 03:57:15 -0600 Subject: [PATCH 1/2] Added check to prevent overflow assertion error --- src/openrct2/actions/RideSetStatus.hpp | 9 +++++++++ src/openrct2/ride/Ride.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/openrct2/actions/RideSetStatus.hpp b/src/openrct2/actions/RideSetStatus.hpp index 15b5fa716a..e9edda3d6f 100644 --- a/src/openrct2/actions/RideSetStatus.hpp +++ b/src/openrct2/actions/RideSetStatus.hpp @@ -78,6 +78,15 @@ public: return res; } + if (_status >= RIDE_STATUS_COUNT) + { + log_warning("Invalid ride status", uint32_t(_rideIndex)); + res->Error = GA_ERROR::INVALID_PARAMETERS; + res->ErrorTitle = STR_RIDE_DESCRIPTION_UNKNOWN; + res->ErrorMessage = STR_NONE; + return res; + } + res->ErrorTitle = _StatusErrorTitles[_status]; ride->FormatNameTo(res->ErrorMessageArgs.data() + 6); if (_status != ride->status) diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index e8a4320d77..4ea175f957 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -630,6 +630,7 @@ enum RIDE_STATUS_OPEN, RIDE_STATUS_TESTING, RIDE_STATUS_SIMULATING, + RIDE_STATUS_COUNT, }; enum : uint8_t From 666d39cee587c5b62ac0e6556ca9c6f5eaa3c617 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Wed, 13 May 2020 00:37:44 +0200 Subject: [PATCH 2/2] Fix log_warning statement --- src/openrct2/actions/RideSetStatus.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/actions/RideSetStatus.hpp b/src/openrct2/actions/RideSetStatus.hpp index e9edda3d6f..70eadaca5c 100644 --- a/src/openrct2/actions/RideSetStatus.hpp +++ b/src/openrct2/actions/RideSetStatus.hpp @@ -80,7 +80,7 @@ public: if (_status >= RIDE_STATUS_COUNT) { - log_warning("Invalid ride status", uint32_t(_rideIndex)); + log_warning("Invalid ride status %u for ride %u", uint32_t(_status), uint32_t(_rideIndex)); res->Error = GA_ERROR::INVALID_PARAMETERS; res->ErrorTitle = STR_RIDE_DESCRIPTION_UNKNOWN; res->ErrorMessage = STR_NONE;