Don't depend on user modifiable data to parse paramter buffer (#8022)

This commit is contained in:
Jack May 2020-01-29 21:49:42 -08:00 committed by GitHub
parent b19f730527
commit 669502ede7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 4 deletions

View File

@ -94,10 +94,10 @@ pub fn deserialize_parameters(
assert_eq!(32, mem::size_of::<Pubkey>()); assert_eq!(32, mem::size_of::<Pubkey>());
let mut start = mem::size_of::<u64>(); // number of accounts let mut start = mem::size_of::<u64>(); // number of accounts
for keyed_account in keyed_accounts.iter() { for (i, keyed_account) in keyed_accounts.iter().enumerate() {
let duplicate = buffer[start] != 0; // duplicate info let (is_dup, _) = is_dup(&keyed_accounts[..i], keyed_account);
start += 1; start += 1; // is_dup
if !duplicate { if !is_dup {
start += mem::size_of::<u64>(); // is_signer start += mem::size_of::<u64>(); // is_signer
start += mem::size_of::<Pubkey>(); // pubkey start += mem::size_of::<Pubkey>(); // pubkey
keyed_account.try_account_ref_mut()?.lamports = keyed_account.try_account_ref_mut()?.lamports =