From c9c94a7ef26f7248e72fdc72c2513d4e24ef6446 Mon Sep 17 00:00:00 2001 From: "Jeff Washington (jwash)" <75863576+jeffwashington@users.noreply.github.com> Date: Thu, 29 Apr 2021 12:38:21 -0500 Subject: [PATCH] checked_sub_lamports (#16923) --- programs/stake/src/stake_state.rs | 8 +++++--- runtime/src/system_instruction_processor.rs | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/programs/stake/src/stake_state.rs b/programs/stake/src/stake_state.rs index 19b148b459..4984c66bad 100644 --- a/programs/stake/src/stake_state.rs +++ b/programs/stake/src/stake_state.rs @@ -1158,7 +1158,7 @@ impl<'a> StakeAccount for KeyedAccount<'a> { split .try_account_ref_mut()? .checked_add_lamports(lamports)?; - self.try_account_ref_mut()?.lamports -= lamports; + self.try_account_ref_mut()?.checked_sub_lamports(lamports)?; Ok(()) } else { Err(InstructionError::InvalidAccountData) @@ -1204,7 +1204,9 @@ impl<'a> StakeAccount for KeyedAccount<'a> { // Drain the source stake account let lamports = source_account.lamports()?; - source_account.try_account_ref_mut()?.lamports -= lamports; + source_account + .try_account_ref_mut()? + .checked_sub_lamports(lamports)?; self.try_account_ref_mut()?.checked_add_lamports(lamports)?; Ok(()) } @@ -1285,7 +1287,7 @@ impl<'a> StakeAccount for KeyedAccount<'a> { self.set_state(&StakeState::Uninitialized)?; } - self.try_account_ref_mut()?.lamports -= lamports; + self.try_account_ref_mut()?.checked_sub_lamports(lamports)?; to.try_account_ref_mut()?.checked_add_lamports(lamports)?; Ok(()) } diff --git a/runtime/src/system_instruction_processor.rs b/runtime/src/system_instruction_processor.rs index 74236ba5dd..28b84a8521 100644 --- a/runtime/src/system_instruction_processor.rs +++ b/runtime/src/system_instruction_processor.rs @@ -189,7 +189,7 @@ fn transfer_verified( return Err(SystemError::ResultWithNegativeLamports.into()); } - from.try_account_ref_mut()?.lamports -= lamports; + from.try_account_ref_mut()?.checked_sub_lamports(lamports)?; to.try_account_ref_mut()?.checked_add_lamports(lamports)?; Ok(()) }