Pārlūkot izejas kodu

lang: Check that ProgramAccount writable on deref_mut (#681)

Kirill Fomichev 4 gadi atpakaļ
vecāks
revīzija
675c7cd81d
2 mainītis faili ar 10 papildinājumiem un 0 dzēšanām
  1. 4 0
      CHANGELOG.md
  2. 6 0
      lang/src/program_account.rs

+ 4 - 0
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

+ 6 - 0
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
     }
 }