Skip to content
Snippets Groups Projects
  1. Jan 29, 2025
    • Valery Gantchev's avatar
      Use checked math in frame-balances named_reserve (#7365) · f373af0d
      Valery Gantchev authored
      
      This PR modifies `named_reserve()` in frame-balances to use checked math
      instead of defensive saturating math.
      
      The use of saturating math relies on the assumption that the sum of the
      values will always fit in `u128::MAX`. However, there is nothing
      preventing the implementing pallet from passing a larger value which
      overflows. This can happen if the implementing pallet does not validate
      user input and instead relies on `named_reserve()` to return an error
      (this saves an additional read)
      
      This is not a security concern, as the method will subsequently return
      an error thanks to `<Self as ReservableCurrency<_>>::reserve(who,
      value)?;`. However, the `defensive_saturating_add` will panic in
      `--all-features`, creating false positive crashes in fuzzing operations.
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      f373af0d