From a227b813d87933a7e6e8f0183fbd0a96b97e0800 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 22 Aug 2020 01:27:33 +0000 Subject: [PATCH] Feature check CPI up front (#11652) (#11787) (cherry picked from commit 4196686acf7d5970dd69ef5a8600e2182850f684) Co-authored-by: Jack May --- programs/bpf_loader/src/syscalls.rs | 37 ++++++++++++++--------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/programs/bpf_loader/src/syscalls.rs b/programs/bpf_loader/src/syscalls.rs index 2ae4d942db..ed4df8e6fb 100644 --- a/programs/bpf_loader/src/syscalls.rs +++ b/programs/bpf_loader/src/syscalls.rs @@ -92,27 +92,26 @@ pub fn register_syscalls<'a>( )?; if invoke_context.is_cross_program_supported() { vm.register_syscall_ex("sol_create_program_address", syscall_create_program_address)?; + + // Cross-program invocation syscalls + + let invoke_context = Rc::new(RefCell::new(invoke_context)); + vm.register_syscall_with_context_ex( + "sol_invoke_signed_c", + Box::new(SyscallProcessSolInstructionC { + callers_keyed_accounts, + invoke_context: invoke_context.clone(), + }), + )?; + vm.register_syscall_with_context_ex( + "sol_invoke_signed_rust", + Box::new(SyscallProcessInstructionRust { + callers_keyed_accounts, + invoke_context: invoke_context.clone(), + }), + )?; } - // Cross-program invocation syscalls - - let invoke_context = Rc::new(RefCell::new(invoke_context)); - - vm.register_syscall_with_context_ex( - "sol_invoke_signed_c", - Box::new(SyscallProcessSolInstructionC { - callers_keyed_accounts, - invoke_context: invoke_context.clone(), - }), - )?; - vm.register_syscall_with_context_ex( - "sol_invoke_signed_rust", - Box::new(SyscallProcessInstructionRust { - callers_keyed_accounts, - invoke_context: invoke_context.clone(), - }), - )?; - // Memory allocator let heap = vec![0_u8; DEFAULT_HEAP_SIZE]; let heap_region = MemoryRegion::new_from_slice(&heap, MM_HEAP_START);