Fixes invoke_context.get_return_data() shadowing program_id. (#21562)

This commit is contained in:
Alexander Meißner 2021-12-02 13:12:11 +01:00 committed by GitHub
parent 8ba676e4c7
commit c825b0a84d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 12 deletions

View File

@ -957,16 +957,17 @@ impl Executor for BpfExecutor {
use_jit: bool,
) -> Result<(), InstructionError> {
let log_collector = invoke_context.get_log_collector();
let compute_meter = invoke_context.get_compute_meter();
let invoke_depth = invoke_context.invoke_depth();
let mut serialize_time = Measure::start("serialize");
let keyed_accounts = invoke_context.get_keyed_accounts()?;
let program = keyed_account_at_index(keyed_accounts, first_instruction_account)?;
let loader_id = &program.owner()?;
let program_id = invoke_context.get_caller()?;
let loader_id = program.owner()?;
let program_id = *program.unsigned_key();
let (mut parameter_bytes, account_lengths) = serialize_parameters(
loader_id,
program_id,
&loader_id,
&program_id,
&keyed_accounts[first_instruction_account + 1..],
instruction_data,
)?;
@ -974,8 +975,6 @@ impl Executor for BpfExecutor {
let mut create_vm_time = Measure::start("create_vm");
let mut execute_time;
{
let program_id = &invoke_context.get_caller()?.clone();
let compute_meter = invoke_context.get_compute_meter();
let mut vm = match create_vm(
&self.executable,
parameter_bytes.as_slice_mut(),
@ -991,7 +990,7 @@ impl Executor for BpfExecutor {
create_vm_time.stop();
execute_time = Measure::start("execute");
stable_log::program_invoke(&log_collector, program_id, invoke_depth);
stable_log::program_invoke(&log_collector, &program_id, invoke_depth);
let mut instruction_meter = ThisInstructionMeter::new(compute_meter.clone());
let before = compute_meter.borrow().get_remaining();
let result = if use_jit {
@ -1003,7 +1002,7 @@ impl Executor for BpfExecutor {
ic_logger_msg!(
log_collector,
"Program {} consumed {} of {} compute units",
program_id,
&program_id,
before - after,
before
);
@ -1015,7 +1014,7 @@ impl Executor for BpfExecutor {
trace!("BPF Program Instruction Trace:\n{}", trace_string);
}
drop(vm);
let (program_id, return_data) = invoke_context.get_return_data();
let (_returned_from_program_id, return_data) = invoke_context.get_return_data();
if !return_data.is_empty() {
stable_log::program_return(&log_collector, &program_id, return_data);
}
@ -1046,7 +1045,7 @@ impl Executor for BpfExecutor {
let mut deserialize_time = Measure::start("deserialize");
let keyed_accounts = invoke_context.get_keyed_accounts()?;
deserialize_parameters(
loader_id,
&loader_id,
&keyed_accounts[first_instruction_account + 1..],
parameter_bytes.as_slice(),
&account_lengths,
@ -1059,8 +1058,7 @@ impl Executor for BpfExecutor {
execute_time.as_us(),
deserialize_time.as_us(),
);
let program_id = invoke_context.get_caller()?;
stable_log::program_success(&log_collector, program_id);
stable_log::program_success(&log_collector, &program_id);
Ok(())
}
}