From 5bdb8242674cd440ae5d0a5300cd01f35fa5c375 Mon Sep 17 00:00:00 2001 From: Tyera Eulberg Date: Wed, 29 Sep 2021 23:36:51 -0500 Subject: [PATCH] Remove original feature gating (#20334) --- runtime/src/accounts.rs | 4 +--- runtime/src/bank.rs | 5 +---- sdk/program/src/message.rs | 6 ++---- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/runtime/src/accounts.rs b/runtime/src/accounts.rs index e91b9e2935..a0aab5d702 100644 --- a/runtime/src/accounts.rs +++ b/runtime/src/accounts.rs @@ -247,8 +247,7 @@ impl Accounts { .unwrap_or_default(); if bpf_loader_upgradeable::check_id(account.owner()) { - if demote_program_write_locks - && message.is_writable(i, demote_program_write_locks) + if message.is_writable(i, demote_program_write_locks) && !message.is_upgradeable_loader_present() { error_counters.invalid_writable_account += 1; @@ -277,7 +276,6 @@ impl Accounts { } } } else if account.executable() - && demote_program_write_locks && message.is_writable(i, demote_program_write_locks) { error_counters.invalid_writable_account += 1; diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 707a4145f8..6a14bb6f49 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -6445,10 +6445,7 @@ pub(crate) mod tests { assert_eq!( bank.process_transaction(&tx), - Err(TransactionError::InstructionError( - 0, - InstructionError::ExecutableLamportChange - )) + Err(TransactionError::InvalidWritableAccount) ); assert_eq!(bank.get_balance(&account_pubkey), account_balance); } diff --git a/sdk/program/src/message.rs b/sdk/program/src/message.rs index 79bd28ae79..8a893d590d 100644 --- a/sdk/program/src/message.rs +++ b/sdk/program/src/message.rs @@ -402,9 +402,6 @@ impl Message { } pub fn is_writable(&self, i: usize, demote_program_write_locks: bool) -> bool { - let demote_program_id = demote_program_write_locks - && self.is_key_called_as_program(i) - && !self.is_upgradeable_loader_present(); (i < (self.header.num_required_signatures - self.header.num_readonly_signed_accounts) as usize || (i >= self.header.num_required_signatures as usize @@ -414,7 +411,8 @@ impl Message { let key = self.account_keys[i]; sysvar::is_sysvar_id(&key) || BUILTIN_PROGRAMS_KEYS.contains(&key) } - && !demote_program_id + && (!self.is_key_called_as_program(i) + || (demote_program_write_locks && self.is_upgradeable_loader_present())) } pub fn is_signer(&self, i: usize) -> bool {