From 900139da3ec419ebb1f62a13d522f7205c4a0416 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 22 Aug 2020 03:12:55 +0000 Subject: [PATCH] Fix region check (bp #11651) (#11784) * fix region checks (#11651) (cherry picked from commit 768b386f0a1bcc01be05df3b4c5a8fdeee729d85) # Conflicts: # sdk/src/pubkey.rs * resolve conflicts Co-authored-by: Jack May --- programs/bpf_loader/src/syscalls.rs | 4 ++-- sdk/src/pubkey.rs | 7 ++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/programs/bpf_loader/src/syscalls.rs b/programs/bpf_loader/src/syscalls.rs index 6c4d368b96..73bc13f412 100644 --- a/programs/bpf_loader/src/syscalls.rs +++ b/programs/bpf_loader/src/syscalls.rs @@ -387,10 +387,10 @@ pub fn syscall_create_program_address( ) }) .collect::, EbpfError>>()?; - let program_id = translate_type!(Pubkey, program_id_addr, rw_regions)?; + let program_id = translate_type!(Pubkey, program_id_addr, ro_regions)?; let new_address = Pubkey::create_program_address(&seeds, program_id).map_err(SyscallError::BadSeeds)?; - let address = translate_slice_mut!(u8, address_addr, 32, ro_regions)?; + let address = translate_slice_mut!(u8, address_addr, 32, rw_regions)?; address.copy_from_slice(new_address.as_ref()); Ok(0) } diff --git a/sdk/src/pubkey.rs b/sdk/src/pubkey.rs index 810e5bd1d8..a16e406ea2 100644 --- a/sdk/src/pubkey.rs +++ b/sdk/src/pubkey.rs @@ -136,16 +136,13 @@ impl Pubkey { address_bytes_addr: *const u8, ) -> u64; }; - let bytes = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - ]; + let mut bytes = [0; 32]; let result = unsafe { sol_create_program_address( seeds as *const _ as *const u8, seeds.len() as u64, program_id as *const _ as *const u8, - &bytes as *const _ as *const u8, + &mut bytes as *mut _ as *mut u8, ) }; match result {