diff --git a/programs/bpf_loader/src/lib.rs b/programs/bpf_loader/src/lib.rs index 6d8bf9efa2..e45a9a0359 100644 --- a/programs/bpf_loader/src/lib.rs +++ b/programs/bpf_loader/src/lib.rs @@ -54,15 +54,16 @@ pub fn serialize_parameters( let mut v: Vec = Vec::new(); v.write_u64::(keyed_accounts.len() as u64) .unwrap(); - for info in keyed_accounts.iter_mut() { - v.write_u64::(info.signer_key().is_some() as u64) + for keyed_account in keyed_accounts.iter_mut() { + v.write_u64::(keyed_account.signer_key().is_some() as u64) .unwrap(); - v.write_all(info.unsigned_key().as_ref()).unwrap(); - v.write_u64::(info.account.lamports).unwrap(); - v.write_u64::(info.account.data.len() as u64) + v.write_all(keyed_account.unsigned_key().as_ref()).unwrap(); + v.write_u64::(keyed_account.account.lamports) .unwrap(); - v.write_all(&info.account.data).unwrap(); - v.write_all(info.account.owner.as_ref()).unwrap(); + v.write_u64::(keyed_account.account.data.len() as u64) + .unwrap(); + v.write_all(&keyed_account.account.data).unwrap(); + v.write_all(keyed_account.account.owner.as_ref()).unwrap(); } v.write_u64::(data.len() as u64).unwrap(); v.write_all(data).unwrap(); @@ -74,17 +75,20 @@ pub fn deserialize_parameters(keyed_accounts: &mut [KeyedAccount], buffer: &[u8] assert_eq!(32, mem::size_of::()); let mut start = mem::size_of::(); - for info in keyed_accounts.iter_mut() { + for keyed_account in keyed_accounts.iter_mut() { start += mem::size_of::(); // skip signer_key boolean start += mem::size_of::(); // skip pubkey - info.account.lamports = LittleEndian::read_u64(&buffer[start..]); + keyed_account.account.lamports = LittleEndian::read_u64(&buffer[start..]); start += mem::size_of::() // skip lamports + mem::size_of::(); // skip length tag - let end = start + info.account.data.len(); - info.account.data.clone_from_slice(&buffer[start..end]); + let end = start + keyed_account.account.data.len(); + keyed_account + .account + .data + .clone_from_slice(&buffer[start..end]); - start += info.account.data.len() // skip data + start += keyed_account.account.data.len() // skip data + mem::size_of::(); // skip owner } }