Use &[u8] for program address seeds rather then &str (#10744) (#11227)

(cherry picked from commit 73586c1aad)

Co-authored-by: Jack May <jack@solana.com>
This commit is contained in:
mergify[bot]
2020-07-27 19:32:21 +00:00
committed by GitHub
parent 2a7fc744f9
commit 7bb7b42356
9 changed files with 47 additions and 45 deletions

View File

@@ -499,15 +499,12 @@ impl<'a> SyscallProcessInstruction<'a> for SyscallProcessInstructionRust<'a> {
let seeds = untranslated_seeds
.iter()
.map(|untranslated_seed| {
let seed_bytes = translate_slice!(
translate_slice!(
u8,
untranslated_seed.as_ptr(),
untranslated_seed.len(),
ro_regions
)?;
from_utf8(seed_bytes).map_err(|err| {
SyscallError::MalformedSignerSeed(err, seed_bytes.to_vec()).into()
})
)
})
.collect::<Result<Vec<_>, EbpfError<BPFError>>>()?;
let signer = Pubkey::create_program_address(&seeds, program_id)
@@ -707,16 +704,11 @@ impl<'a> SyscallProcessInstruction<'a> for SyscallProcessSolInstructionC<'a> {
signer_seeds.len,
ro_regions
)?;
let seed_strs = seeds
let seeds_bytes = seeds
.iter()
.map(|seed| {
let seed_bytes = translate_slice!(u8, seed.addr, seed.len, ro_regions)?;
std::str::from_utf8(seed_bytes).map_err(|err| {
SyscallError::MalformedSignerSeed(err, seed_bytes.to_vec()).into()
})
})
.map(|seed| translate_slice!(u8, seed.addr, seed.len, ro_regions))
.collect::<Result<Vec<_>, EbpfError<BPFError>>>()?;
Pubkey::create_program_address(&seed_strs, program_id)
Pubkey::create_program_address(&seeds_bytes, program_id)
.map_err(|err| SyscallError::BadSeeds(err).into())
})
.collect::<Result<Vec<_>, EbpfError<BPFError>>>()?)