(cherry picked from commit 800472ddf5
)
Co-authored-by: Brooks Prumo <brooks@solana.com>
This commit is contained in:
@ -38,8 +38,8 @@ use {
|
||||
clock::Clock,
|
||||
entrypoint::{HEAP_LENGTH, SUCCESS},
|
||||
feature_set::{
|
||||
do_support_realloc, reduce_required_deploy_balance, reject_all_elf_rw,
|
||||
reject_deployment_of_unresolved_syscalls,
|
||||
cap_accounts_data_len, do_support_realloc, reduce_required_deploy_balance,
|
||||
reject_all_elf_rw, reject_deployment_of_unresolved_syscalls,
|
||||
reject_section_virtual_address_file_offset_mismatch, requestable_heap_size,
|
||||
start_verify_shift32_imm, stop_verify_mul64_imm_nonzero,
|
||||
},
|
||||
@ -47,6 +47,7 @@ use {
|
||||
keyed_account::{from_keyed_account, keyed_account_at_index, KeyedAccount},
|
||||
loader_instruction::LoaderInstruction,
|
||||
loader_upgradeable_instruction::UpgradeableLoaderInstruction,
|
||||
program_error::ACCOUNTS_DATA_BUDGET_EXCEEDED,
|
||||
program_utils::limited_deserialize,
|
||||
pubkey::Pubkey,
|
||||
rent::Rent,
|
||||
@ -1041,7 +1042,17 @@ impl Executor for BpfExecutor {
|
||||
}
|
||||
match result {
|
||||
Ok(status) if status != SUCCESS => {
|
||||
let error: InstructionError = status.into();
|
||||
let error: InstructionError = if status == ACCOUNTS_DATA_BUDGET_EXCEEDED
|
||||
&& !invoke_context
|
||||
.feature_set
|
||||
.is_active(&cap_accounts_data_len::id())
|
||||
{
|
||||
// Until the cap_accounts_data_len feature is enabled, map the
|
||||
// ACCOUNTS_DATA_BUDGET_EXCEEDED error to InvalidError
|
||||
InstructionError::InvalidError
|
||||
} else {
|
||||
status.into()
|
||||
};
|
||||
stable_log::program_failure(&log_collector, &program_id, &error);
|
||||
Err(error)
|
||||
}
|
||||
|
Reference in New Issue
Block a user