From 056ba1e9592955650536c851a68c978cb5b58445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Chabowski?= Date: Mon, 23 Sep 2024 21:35:54 +0200 Subject: [PATCH] Use `saturating_abs()` to protect against overflow --- crates/fuel-gas-price-algorithm/src/utils.rs | 21 -------------------- crates/fuel-gas-price-algorithm/src/v1.rs | 7 ++----- 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/crates/fuel-gas-price-algorithm/src/utils.rs b/crates/fuel-gas-price-algorithm/src/utils.rs index 5d54c08cb49..7b6f14a24ad 100644 --- a/crates/fuel-gas-price-algorithm/src/utils.rs +++ b/crates/fuel-gas-price-algorithm/src/utils.rs @@ -18,24 +18,3 @@ pub(crate) fn cumulative_percentage_change( // `f64` over `u64::MAX` are cast to `u64::MAX` approx.ceil() as u64 } - -pub(crate) fn safe_signed_abs(n: i128) -> i128 { - let n = if n == i128::MIN { - n.saturating_add(1) - } else { - n - }; - debug_assert!(n != i128::MIN); - n.abs() -} - -#[cfg(test)] -mod tests { - use crate::utils::safe_signed_abs; - - #[test] - fn safe_signed_abs_does_not_overflow_on_min_value() { - let abs = safe_signed_abs(i128::MIN); - assert_eq!(abs, i128::MAX); - } -} diff --git a/crates/fuel-gas-price-algorithm/src/v1.rs b/crates/fuel-gas-price-algorithm/src/v1.rs index e33a444a11b..5d111dde64b 100644 --- a/crates/fuel-gas-price-algorithm/src/v1.rs +++ b/crates/fuel-gas-price-algorithm/src/v1.rs @@ -4,10 +4,7 @@ use std::{ ops::Div, }; -use crate::utils::{ - cumulative_percentage_change, - safe_signed_abs, -}; +use crate::utils::cumulative_percentage_change; #[cfg(test)] mod tests; @@ -334,7 +331,7 @@ impl AlgorithmUpdaterV1 { .saturating_mul(upcast_percent) .saturating_div(100) .into(); - let clamped_change = safe_signed_abs(pd_change).min(max_change); + let clamped_change = pd_change.saturating_abs().min(max_change); pd_change.signum().saturating_mul(clamped_change) }