- Implicitly fixes invoke_context.return_data not being reset between instructions in process_message. (#21671)

- Lets InvokeContext::process_cross_program_instruction() handle the first invocation depth too.
- Marks InvokeContext::verify(), InvokeContext::verify_and_update() and InvokeContext::process_executable_chain() private.
- Renames InvokeContext::process_cross_program_instruction() to InvokeContext::process_instruction().
- Removes InvokeContext::new_mock_with_sysvars().
This commit is contained in:
Alexander Meißner
2021-12-07 23:00:04 +01:00
committed by GitHub
parent 94b1cf47ca
commit 1df88837c8
7 changed files with 91 additions and 97 deletions

View File

@ -455,7 +455,7 @@ mod tests {
&preparation.message,
&preparation.message.instructions[0],
&program_indices,
Some(&preparation.account_indices),
&preparation.account_indices,
)
.unwrap();

View File

@ -2390,8 +2390,9 @@ fn call<'a, 'b: 'a>(
// Process instruction
invoke_context
.process_cross_program_instruction(
.process_instruction(
&message,
&message.instructions[0],
&program_indices,
&account_indices,
&caller_write_privileges,
@ -2989,7 +2990,7 @@ mod tests {
);
let mut invoke_context = InvokeContext::new_mock(&accounts, &[]);
invoke_context
.push(&message, &message.instructions[0], &[0], None)
.push(&message, &message.instructions[0], &[0], &[])
.unwrap();
let mut syscall_panic = SyscallPanic {
invoke_context: Rc::new(RefCell::new(&mut invoke_context)),
@ -3066,7 +3067,7 @@ mod tests {
);
let mut invoke_context = InvokeContext::new_mock(&accounts, &[]);
invoke_context
.push(&message, &message.instructions[0], &[0], None)
.push(&message, &message.instructions[0], &[0], &[])
.unwrap();
let mut syscall_sol_log = SyscallLog {
invoke_context: Rc::new(RefCell::new(&mut invoke_context)),
@ -3170,7 +3171,7 @@ mod tests {
);
let mut invoke_context = InvokeContext::new_mock(&accounts, &[]);
invoke_context
.push(&message, &message.instructions[0], &[0], None)
.push(&message, &message.instructions[0], &[0], &[])
.unwrap();
let cost = invoke_context.get_compute_budget().log_64_units;
let mut syscall_sol_log_u64 = SyscallLogU64 {
@ -3212,7 +3213,7 @@ mod tests {
);
let mut invoke_context = InvokeContext::new_mock(&accounts, &[]);
invoke_context
.push(&message, &message.instructions[0], &[0], None)
.push(&message, &message.instructions[0], &[0], &[])
.unwrap();
let cost = invoke_context.get_compute_budget().log_pubkey_units;
let mut syscall_sol_pubkey = SyscallLogPubkey {
@ -3486,7 +3487,7 @@ mod tests {
* 4,
);
invoke_context
.push(&message, &message.instructions[0], &[0], None)
.push(&message, &message.instructions[0], &[0], &[])
.unwrap();
let mut syscall = SyscallSha256 {
invoke_context: Rc::new(RefCell::new(&mut invoke_context)),
@ -3585,7 +3586,7 @@ mod tests {
let sysvars = [(sysvar::clock::id(), data)];
invoke_context.sysvars = &sysvars;
invoke_context
.push(&message, &message.instructions[0], &[0], None)
.push(&message, &message.instructions[0], &[0], &[])
.unwrap();
let mut syscall = SyscallGetClockSysvar {
invoke_context: Rc::new(RefCell::new(&mut invoke_context)),
@ -3630,7 +3631,7 @@ mod tests {
let sysvars = [(sysvar::epoch_schedule::id(), data)];
invoke_context.sysvars = &sysvars;
invoke_context
.push(&message, &message.instructions[0], &[0], None)
.push(&message, &message.instructions[0], &[0], &[])
.unwrap();
let mut syscall = SyscallGetEpochScheduleSysvar {
invoke_context: Rc::new(RefCell::new(&mut invoke_context)),
@ -3682,7 +3683,7 @@ mod tests {
let sysvars = [(sysvar::fees::id(), data)];
invoke_context.sysvars = &sysvars;
invoke_context
.push(&message, &message.instructions[0], &[0], None)
.push(&message, &message.instructions[0], &[0], &[])
.unwrap();
let mut syscall = SyscallGetFeesSysvar {
invoke_context: Rc::new(RefCell::new(&mut invoke_context)),
@ -3725,7 +3726,7 @@ mod tests {
let sysvars = [(sysvar::rent::id(), data)];
invoke_context.sysvars = &sysvars;
invoke_context
.push(&message, &message.instructions[0], &[0], None)
.push(&message, &message.instructions[0], &[0], &[])
.unwrap();
let mut syscall = SyscallGetRentSysvar {
invoke_context: Rc::new(RefCell::new(&mut invoke_context)),
@ -3863,7 +3864,7 @@ mod tests {
);
let mut invoke_context = InvokeContext::new_mock(&accounts, &[]);
invoke_context
.push(&message, &message.instructions[0], &[0], None)
.push(&message, &message.instructions[0], &[0], &[])
.unwrap();
let address = bpf_loader_upgradeable::id();
@ -3979,7 +3980,7 @@ mod tests {
);
let mut invoke_context = InvokeContext::new_mock(&accounts, &[]);
invoke_context
.push(&message, &message.instructions[0], &[0], None)
.push(&message, &message.instructions[0], &[0], &[])
.unwrap();
let cost = invoke_context
.get_compute_budget()

View File

@ -437,7 +437,7 @@ mod tests {
&preparation.message,
&preparation.message.instructions[0],
&program_indices,
Some(&preparation.account_indices),
&preparation.account_indices,
)?;
super::process_instruction(1, &instruction.data, &mut invoke_context)
}
@ -1084,7 +1084,7 @@ mod tests {
&preparation.message,
&preparation.message.instructions[0],
&program_indices,
Some(&preparation.account_indices),
&preparation.account_indices,
)
.unwrap();
assert_eq!(