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:
@@ -550,6 +550,7 @@ impl TryFrom<tx_by_addr::TransactionError> for TransactionError {
|
||||
16 => TransactionError::AccountBorrowOutstanding,
|
||||
17 => TransactionError::WouldExceedMaxBlockCostLimit,
|
||||
18 => TransactionError::UnsupportedVersion,
|
||||
19 => TransactionError::InvalidWritableAccount,
|
||||
_ => return Err("Invalid TransactionError"),
|
||||
})
|
||||
}
|
||||
@@ -614,6 +615,9 @@ impl From<TransactionError> for tx_by_addr::TransactionError {
|
||||
TransactionError::UnsupportedVersion => {
|
||||
tx_by_addr::TransactionErrorType::UnsupportedVersion
|
||||
}
|
||||
TransactionError::InvalidWritableAccount => {
|
||||
tx_by_addr::TransactionErrorType::InvalidWritableAccount
|
||||
}
|
||||
} as i32,
|
||||
instruction_error: match transaction_error {
|
||||
TransactionError::InstructionError(index, ref instruction_error) => {
|
||||
|
Reference in New Issue
Block a user