From 285903e7d0d2a9dd43f4515c16790c51a5caea1b Mon Sep 17 00:00:00 2001 From: Harmenszoon <25753539+Harmenszoon@users.noreply.github.com> Date: Mon, 11 May 2026 16:45:35 -0400 Subject: [PATCH 1/2] [Player] guard malformed time_to expressions --- engine/player/player.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engine/player/player.cpp b/engine/player/player.cpp index c4cc379832c..21990af99d1 100644 --- a/engine/player/player.cpp +++ b/engine/player/player.cpp @@ -12072,6 +12072,11 @@ std::unique_ptr player_t::create_expression( util::string_view expressio auto parts = util::string_split( expression_str, "_" ); double percent = -1.0; + if ( parts.size() < 3 ) + { + throw sc_invalid_apl_argument( fmt::format( "Invalid 'time_to_' expression '{}'.", expression_str ) ); + } + if ( util::str_in_str_ci( parts[ 2 ], "die" ) ) { percent = 0.0; From 171e56588d0aa150b0d9d62d14474cf2cc10a5d7 Mon Sep 17 00:00:00 2001 From: Harmenszoon <25753539+Harmenszoon@users.noreply.github.com> Date: Mon, 11 May 2026 17:19:51 -0400 Subject: [PATCH 2/2] [Player] guard malformed resource time_to expressions --- engine/player/player.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engine/player/player.cpp b/engine/player/player.cpp index 21990af99d1..9946f99a44c 100644 --- a/engine/player/player.cpp +++ b/engine/player/player.cpp @@ -12833,6 +12833,11 @@ std::unique_ptr player_t::create_resource_expression( util::string_view { auto parts = util::string_split( splits[ 1 ], "_" ); + if ( parts.size() < 3 ) + { + throw sc_invalid_apl_argument( fmt::format( "Invalid resource expression '{}'.", expression_str ) ); + } + // foo.time_to_max if ( util::str_in_str_ci( parts[ 2 ], "max" ) ) {