From 669502ede7711f15fb9c273eaa77224dca32a99a Mon Sep 17 00:00:00 2001 From: Jack May Date: Wed, 29 Jan 2020 21:49:42 -0800 Subject: [PATCH] Don't depend on user modifiable data to parse paramter buffer (#8022) --- programs/bpf_loader/src/lib.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/programs/bpf_loader/src/lib.rs b/programs/bpf_loader/src/lib.rs index f52bfdfa6f..d989540298 100644 --- a/programs/bpf_loader/src/lib.rs +++ b/programs/bpf_loader/src/lib.rs @@ -94,10 +94,10 @@ pub fn deserialize_parameters( assert_eq!(32, mem::size_of::()); let mut start = mem::size_of::(); // number of accounts - for keyed_account in keyed_accounts.iter() { - let duplicate = buffer[start] != 0; // duplicate info - start += 1; - if !duplicate { + for (i, keyed_account) in keyed_accounts.iter().enumerate() { + let (is_dup, _) = is_dup(&keyed_accounts[..i], keyed_account); + start += 1; // is_dup + if !is_dup { start += mem::size_of::(); // is_signer start += mem::size_of::(); // pubkey keyed_account.try_account_ref_mut()?.lamports =