From e434190cfe9dad2a93d148c5cdd376816d906536 Mon Sep 17 00:00:00 2001 From: slideglide <68702247+slideglide@users.noreply.github.com> Date: Sun, 23 Aug 2026 14:36:23 +0300 Subject: [PATCH 1/3] fix(utils): reject trailing characters in numFromString --- loader/src/utils/general.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/loader/src/utils/general.cpp b/loader/src/utils/general.cpp index 3b265cae1..de8799ccd 100644 --- a/loader/src/utils/general.cpp +++ b/loader/src/utils/general.cpp @@ -13,13 +13,15 @@ float geode::utils::getDisplayFactor() { template static Result toParseResult(T* value, fast_float::from_chars_result res, std::string_view str) { auto [ptr, ec] = res; - if (ec == std::errc()) return Ok(*value); - else if (ptr != str.data() + str.size()) return Err("String contains trailing extra data"); - else if (ec == std::errc::invalid_argument) return Err("String is not a number"); - else if (ec == std::errc::result_out_of_range) return Err("Number is out of range for target type"); - else return Err("Unknown error"); -} + if (ec == std::errc::invalid_argument) return Err("String is not a number"); + if (ec == std::errc::result_out_of_range) return Err("Number is out of range for target type"); + if (ec != std::errc()) return Err("Unknown error"); + + if (ptr != str.data() + str.size()) return Err("String contains trailing extra data"); + + return Ok(*value); +} template static Result parseFloat(std::string_view str) { T result; From cd434d4982ee5f1dcb972b273b7aef40ccc85ff5 Mon Sep 17 00:00:00 2001 From: slideglide <68702247+slideglide@users.noreply.github.com> Date: Sun, 23 Aug 2026 15:05:20 +0300 Subject: [PATCH 2/3] replace unknown error with error code message --- loader/src/utils/general.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/loader/src/utils/general.cpp b/loader/src/utils/general.cpp index de8799ccd..fecf6a38b 100644 --- a/loader/src/utils/general.cpp +++ b/loader/src/utils/general.cpp @@ -16,12 +16,13 @@ static Result toParseResult(T* value, fast_float::from_chars_result res, std: if (ec == std::errc::invalid_argument) return Err("String is not a number"); if (ec == std::errc::result_out_of_range) return Err("Number is out of range for target type"); - if (ec != std::errc()) return Err("Unknown error"); + if (ec != std::errc()) return Err(std::make_error_code(ec).message()); if (ptr != str.data() + str.size()) return Err("String contains trailing extra data"); return Ok(*value); } + template static Result parseFloat(std::string_view str) { T result; From 86ea53111714b37e947256177d5db010d2ec2a8e Mon Sep 17 00:00:00 2001 From: slideglide <68702247+slideglide@users.noreply.github.com> Date: Sun, 23 Aug 2026 15:18:09 +0300 Subject: [PATCH 3/3] small change: remove "extra" from the trailing data error --- loader/src/utils/general.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/loader/src/utils/general.cpp b/loader/src/utils/general.cpp index fecf6a38b..9d1ccd0aa 100644 --- a/loader/src/utils/general.cpp +++ b/loader/src/utils/general.cpp @@ -18,7 +18,7 @@ static Result toParseResult(T* value, fast_float::from_chars_result res, std: if (ec == std::errc::result_out_of_range) return Err("Number is out of range for target type"); if (ec != std::errc()) return Err(std::make_error_code(ec).message()); - if (ptr != str.data() + str.size()) return Err("String contains trailing extra data"); + if (ptr != str.data() + str.size()) return Err("String contains trailing data"); return Ok(*value); }