(cherry picked from commit 6c6095abe7
)
Co-authored-by: Jack May <jack@solana.com>
This commit is contained in:
@ -255,7 +255,9 @@ fn process_instruction_common(
|
|||||||
(first_account, keyed_accounts, 0)
|
(first_account, keyed_accounts, 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
if !check_loader_id(&program.owner()?) {
|
let loader_id = &program.owner()?;
|
||||||
|
|
||||||
|
if !check_loader_id(loader_id) {
|
||||||
log!(logger, "Executable account not owned by the BPF loader");
|
log!(logger, "Executable account not owned by the BPF loader");
|
||||||
return Err(InstructionError::IncorrectProgramId);
|
return Err(InstructionError::IncorrectProgramId);
|
||||||
}
|
}
|
||||||
@ -270,7 +272,7 @@ fn process_instruction_common(
|
|||||||
)?,
|
)?,
|
||||||
};
|
};
|
||||||
executor.execute(
|
executor.execute(
|
||||||
&program.owner()?,
|
loader_id,
|
||||||
keyed_accounts,
|
keyed_accounts,
|
||||||
instruction_data,
|
instruction_data,
|
||||||
invoke_context,
|
invoke_context,
|
||||||
@ -661,7 +663,7 @@ impl Debug for BPFExecutor {
|
|||||||
impl Executor for BPFExecutor {
|
impl Executor for BPFExecutor {
|
||||||
fn execute(
|
fn execute(
|
||||||
&self,
|
&self,
|
||||||
program_id: &Pubkey,
|
loader_id: &Pubkey,
|
||||||
keyed_accounts: &[KeyedAccount],
|
keyed_accounts: &[KeyedAccount],
|
||||||
instruction_data: &[u8],
|
instruction_data: &[u8],
|
||||||
invoke_context: &mut dyn InvokeContext,
|
invoke_context: &mut dyn InvokeContext,
|
||||||
@ -675,7 +677,7 @@ impl Executor for BPFExecutor {
|
|||||||
|
|
||||||
let parameter_accounts = keyed_accounts_iter.as_slice();
|
let parameter_accounts = keyed_accounts_iter.as_slice();
|
||||||
let mut parameter_bytes = serialize_parameters(
|
let mut parameter_bytes = serialize_parameters(
|
||||||
program_id,
|
loader_id,
|
||||||
program.unsigned_key(),
|
program.unsigned_key(),
|
||||||
parameter_accounts,
|
parameter_accounts,
|
||||||
&instruction_data,
|
&instruction_data,
|
||||||
@ -683,7 +685,7 @@ impl Executor for BPFExecutor {
|
|||||||
{
|
{
|
||||||
let compute_meter = invoke_context.get_compute_meter();
|
let compute_meter = invoke_context.get_compute_meter();
|
||||||
let mut vm = match create_vm(
|
let mut vm = match create_vm(
|
||||||
program_id,
|
loader_id,
|
||||||
self.program.as_ref(),
|
self.program.as_ref(),
|
||||||
&mut parameter_bytes,
|
&mut parameter_bytes,
|
||||||
¶meter_accounts,
|
¶meter_accounts,
|
||||||
@ -742,7 +744,7 @@ impl Executor for BPFExecutor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
deserialize_parameters(program_id, parameter_accounts, ¶meter_bytes)?;
|
deserialize_parameters(loader_id, parameter_accounts, ¶meter_bytes)?;
|
||||||
stable_log::program_success(&logger, program.unsigned_key());
|
stable_log::program_success(&logger, program.unsigned_key());
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user