Skip to content

Commit

Permalink
Fix - Adds missing "Executable account not owned by the BPF loader" e…
Browse files Browse the repository at this point in the history
…rror to `remove_bpf_loader_incorrect_program_id` (#32695)

Adds missing "Executable account not owned by the BPF loader" error.
  • Loading branch information
Lichtso authored Aug 3, 2023
1 parent 2225aec commit b5a80a7
Showing 1 changed file with 19 additions and 4 deletions.
23 changes: 19 additions & 4 deletions programs/bpf_loader/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -431,11 +431,13 @@ fn process_instruction_inner(
transaction_context.get_key_of_account_at_index(index_in_transaction)
});
let program_id = instruction_context.get_last_program_key(transaction_context)?;
if first_account_key == program_id
|| second_account_key
.map(|key| key == program_id)
.unwrap_or(false)
let program_account_index = if first_account_key == program_id {
first_instruction_account
} else if second_account_key
.map(|key| key == program_id)
.unwrap_or(false)
{
first_instruction_account.saturating_add(1)
} else {
let first_account = try_borrow_account(
transaction_context,
Expand All @@ -446,6 +448,19 @@ fn process_instruction_inner(
ic_logger_msg!(log_collector, "BPF loader is executable");
return Err(Box::new(InstructionError::IncorrectProgramId));
}
first_instruction_account
};
let program = try_borrow_account(
transaction_context,
instruction_context,
program_account_index,
)?;
if program.is_executable() && !check_loader_id(program.get_owner()) {
ic_logger_msg!(
log_collector,
"Executable account not owned by the BPF loader"
);
return Err(Box::new(InstructionError::IncorrectProgramId));
}
}

Expand Down

0 comments on commit b5a80a7

Please sign in to comment.