From 2b4e0abb435f94efbc079a580d1596ab0a57783f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 22 Aug 2020 01:14:13 +0000 Subject: [PATCH] fix region checks (#11651) (#11785) (cherry picked from commit 768b386f0a1bcc01be05df3b4c5a8fdeee729d85) 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 954b712892..2ae4d942db 100644 --- a/programs/bpf_loader/src/syscalls.rs +++ b/programs/bpf_loader/src/syscalls.rs @@ -355,10 +355,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 c6a69c4f8e..3807ea502c 100644 --- a/sdk/src/pubkey.rs +++ b/sdk/src/pubkey.rs @@ -139,16 +139,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 {