diff --git a/CHANGELOG.md b/CHANGELOG.md index 7acf4cc85a..05e9a18930 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ incremented for features. ## [Unreleased] +### Features + +* lang: Check that ProgramAccount writable before mut borrow (`anchor-debug` only) ([#681](https://github.com/project-serum/anchor/pull/681)). + ## [0.14.0] - 2021-09-02 ### Features diff --git a/lang/src/program_account.rs b/lang/src/program_account.rs index 885157f2f0..dbc856369d 100644 --- a/lang/src/program_account.rs +++ b/lang/src/program_account.rs @@ -156,6 +156,12 @@ impl<'a, T: AccountSerialize + AccountDeserialize + Clone> Deref for ProgramAcco impl<'a, T: AccountSerialize + AccountDeserialize + Clone> DerefMut for ProgramAccount<'a, T> { fn deref_mut(&mut self) -> &mut Self::Target { + #[cfg(feature = "anchor-debug")] + if !self.inner.info.is_writable { + solana_program::msg!("The given ProgramAccount is not mutable"); + panic!(); + } + &mut DerefMut::deref_mut(&mut self.inner).account } }