Return error if Transaction contains writable executable or ProgramData accounts (#19629)

* Return error if Transaction locks an executable as writable

* Return error if a ProgramData account is writable but the upgradable loader isn't present

* Remove unreachable clause

* Fixup bpf tests

* Review comments

* Add new TransactionError

* Disallow writes to any upgradeable-loader account when loader not present; remove is_upgradeable_loader_present exception for all other executables
This commit is contained in:
Tyera Eulberg
2021-09-08 16:21:52 -05:00
committed by GitHub
parent 32054e7fad
commit 38bbb77989
7 changed files with 305 additions and 29 deletions

View File

@ -119,6 +119,10 @@ pub enum TransactionError {
/// Transaction version is unsupported
#[error("Transaction version is unsupported")]
UnsupportedVersion,
/// Transaction loads a writable account that cannot be written
#[error("Transaction loads a writable account that cannot be written")]
InvalidWritableAccount,
}
pub type Result<T> = result::Result<T, TransactionError>;