Account->AccountSharedData (#15691)
This commit is contained in:
committed by
GitHub
parent
61c7ce857e
commit
8a3135d17b
@ -866,7 +866,7 @@ mod tests {
|
||||
message_processor::{Executors, ThisInvokeContext},
|
||||
};
|
||||
use solana_sdk::{
|
||||
account::{create_account, Account},
|
||||
account::{create_account_shared_data as create_account, AccountSharedData},
|
||||
account_utils::StateMut,
|
||||
client::SyncClient,
|
||||
clock::Clock,
|
||||
@ -933,7 +933,7 @@ mod tests {
|
||||
fn test_bpf_loader_write() {
|
||||
let program_id = bpf_loader::id();
|
||||
let program_key = solana_sdk::pubkey::new_rand();
|
||||
let program_account = Account::new_ref(1, 0, &program_id);
|
||||
let program_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
let keyed_accounts = vec![KeyedAccount::new(&program_key, false, &program_account)];
|
||||
let instruction_data = bincode::serialize(&LoaderInstruction::Write {
|
||||
offset: 3,
|
||||
@ -1004,7 +1004,8 @@ mod tests {
|
||||
let mut elf = Vec::new();
|
||||
let rent = Rent::default();
|
||||
file.read_to_end(&mut elf).unwrap();
|
||||
let program_account = Account::new_ref(rent.minimum_balance(elf.len()), 0, &program_id);
|
||||
let program_account =
|
||||
AccountSharedData::new_ref(rent.minimum_balance(elf.len()), 0, &program_id);
|
||||
program_account.borrow_mut().data = elf;
|
||||
let keyed_accounts = vec![KeyedAccount::new(&program_key, false, &program_account)];
|
||||
let instruction_data = bincode::serialize(&LoaderInstruction::Finalize).unwrap();
|
||||
@ -1069,7 +1070,7 @@ mod tests {
|
||||
let mut file = File::open("test_elfs/noop_aligned.so").expect("file open failed");
|
||||
let mut elf = Vec::new();
|
||||
file.read_to_end(&mut elf).unwrap();
|
||||
let program_account = Account::new_ref(1, 0, &program_id);
|
||||
let program_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
program_account.borrow_mut().data = elf;
|
||||
program_account.borrow_mut().executable = true;
|
||||
|
||||
@ -1098,7 +1099,7 @@ mod tests {
|
||||
keyed_accounts[0].account.borrow_mut().executable = true;
|
||||
|
||||
// Case: With program and parameter account
|
||||
let parameter_account = Account::new_ref(1, 0, &program_id);
|
||||
let parameter_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
keyed_accounts.push(KeyedAccount::new(&program_key, false, ¶meter_account));
|
||||
assert_eq!(
|
||||
Ok(()),
|
||||
@ -1139,7 +1140,7 @@ mod tests {
|
||||
|
||||
// Case: With duplicate accounts
|
||||
let duplicate_key = solana_sdk::pubkey::new_rand();
|
||||
let parameter_account = Account::new_ref(1, 0, &program_id);
|
||||
let parameter_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
let mut keyed_accounts = vec![KeyedAccount::new(&program_key, false, &program_account)];
|
||||
keyed_accounts.push(KeyedAccount::new(&duplicate_key, false, ¶meter_account));
|
||||
keyed_accounts.push(KeyedAccount::new(&duplicate_key, false, ¶meter_account));
|
||||
@ -1163,13 +1164,13 @@ mod tests {
|
||||
let mut file = File::open("test_elfs/noop_unaligned.so").expect("file open failed");
|
||||
let mut elf = Vec::new();
|
||||
file.read_to_end(&mut elf).unwrap();
|
||||
let program_account = Account::new_ref(1, 0, &program_id);
|
||||
let program_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
program_account.borrow_mut().data = elf;
|
||||
program_account.borrow_mut().executable = true;
|
||||
let mut keyed_accounts = vec![KeyedAccount::new(&program_key, false, &program_account)];
|
||||
|
||||
// Case: With program and parameter account
|
||||
let parameter_account = Account::new_ref(1, 0, &program_id);
|
||||
let parameter_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
keyed_accounts.push(KeyedAccount::new(&program_key, false, ¶meter_account));
|
||||
assert_eq!(
|
||||
Ok(()),
|
||||
@ -1183,7 +1184,7 @@ mod tests {
|
||||
|
||||
// Case: With duplicate accounts
|
||||
let duplicate_key = solana_sdk::pubkey::new_rand();
|
||||
let parameter_account = Account::new_ref(1, 0, &program_id);
|
||||
let parameter_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
let mut keyed_accounts = vec![KeyedAccount::new(&program_key, false, &program_account)];
|
||||
keyed_accounts.push(KeyedAccount::new(&duplicate_key, false, ¶meter_account));
|
||||
keyed_accounts.push(KeyedAccount::new(&duplicate_key, false, ¶meter_account));
|
||||
@ -1207,13 +1208,13 @@ mod tests {
|
||||
let mut file = File::open("test_elfs/noop_aligned.so").expect("file open failed");
|
||||
let mut elf = Vec::new();
|
||||
file.read_to_end(&mut elf).unwrap();
|
||||
let program_account = Account::new_ref(1, 0, &program_id);
|
||||
let program_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
program_account.borrow_mut().data = elf;
|
||||
program_account.borrow_mut().executable = true;
|
||||
let mut keyed_accounts = vec![KeyedAccount::new(&program_key, false, &program_account)];
|
||||
|
||||
// Case: With program and parameter account
|
||||
let parameter_account = Account::new_ref(1, 0, &program_id);
|
||||
let parameter_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
keyed_accounts.push(KeyedAccount::new(&program_key, false, ¶meter_account));
|
||||
assert_eq!(
|
||||
Ok(()),
|
||||
@ -1227,7 +1228,7 @@ mod tests {
|
||||
|
||||
// Case: With duplicate accounts
|
||||
let duplicate_key = solana_sdk::pubkey::new_rand();
|
||||
let parameter_account = Account::new_ref(1, 0, &program_id);
|
||||
let parameter_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
let mut keyed_accounts = vec![KeyedAccount::new(&program_key, false, &program_account)];
|
||||
keyed_accounts.push(KeyedAccount::new(&duplicate_key, false, ¶meter_account));
|
||||
keyed_accounts.push(KeyedAccount::new(&duplicate_key, false, ¶meter_account));
|
||||
@ -1247,13 +1248,13 @@ mod tests {
|
||||
let instruction =
|
||||
bincode::serialize(&UpgradeableLoaderInstruction::InitializeBuffer).unwrap();
|
||||
let buffer_address = Pubkey::new_unique();
|
||||
let buffer_account = Account::new_ref(
|
||||
let buffer_account = AccountSharedData::new_ref(
|
||||
1,
|
||||
UpgradeableLoaderState::buffer_len(9).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
);
|
||||
let authority_address = Pubkey::new_unique();
|
||||
let authority_account = Account::new_ref(
|
||||
let authority_account = AccountSharedData::new_ref(
|
||||
1,
|
||||
UpgradeableLoaderState::buffer_len(9).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -1305,7 +1306,7 @@ mod tests {
|
||||
#[test]
|
||||
fn test_bpf_loader_upgradeable_write() {
|
||||
let buffer_address = Pubkey::new_unique();
|
||||
let buffer_account = Account::new_ref(
|
||||
let buffer_account = AccountSharedData::new_ref(
|
||||
1,
|
||||
UpgradeableLoaderState::buffer_len(9).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -1372,7 +1373,7 @@ mod tests {
|
||||
bytes: vec![42; 6],
|
||||
})
|
||||
.unwrap();
|
||||
let buffer_account = Account::new_ref(
|
||||
let buffer_account = AccountSharedData::new_ref(
|
||||
1,
|
||||
UpgradeableLoaderState::buffer_len(9).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -1564,7 +1565,7 @@ mod tests {
|
||||
UpgradeableLoaderState::programdata_len(elf.len()).unwrap(),
|
||||
);
|
||||
let buffer_address = Pubkey::new_unique();
|
||||
let mut buffer_account = Account::new(
|
||||
let mut buffer_account = AccountSharedData::new(
|
||||
min_programdata_balance,
|
||||
UpgradeableLoaderState::buffer_len(elf.len()).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -1576,12 +1577,12 @@ mod tests {
|
||||
.unwrap();
|
||||
buffer_account.data[UpgradeableLoaderState::buffer_data_offset().unwrap()..]
|
||||
.copy_from_slice(&elf);
|
||||
let program_account = Account::new(
|
||||
let program_account = AccountSharedData::new(
|
||||
min_programdata_balance,
|
||||
UpgradeableLoaderState::program_len().unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
);
|
||||
let programdata_account = Account::new(
|
||||
let programdata_account = AccountSharedData::new(
|
||||
1,
|
||||
UpgradeableLoaderState::programdata_len(elf.len()).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -1590,8 +1591,8 @@ mod tests {
|
||||
// Test successful deploy
|
||||
bank.clear_signatures();
|
||||
bank.store_account(&buffer_address, &buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let before = bank.get_balance(&mint_keypair.pubkey());
|
||||
let message = Message::new(
|
||||
&bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
@ -1683,7 +1684,7 @@ mod tests {
|
||||
// Test initialized ProgramData account
|
||||
bank.clear_signatures();
|
||||
bank.store_account(&buffer_address, &buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
let message = Message::new(
|
||||
&bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
@ -1772,9 +1773,9 @@ mod tests {
|
||||
|
||||
// Test invalid Buffer account state
|
||||
bank.clear_signatures();
|
||||
bank.store_account(&buffer_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&buffer_address, &AccountSharedData::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let message = Message::new(
|
||||
&bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
@ -1801,8 +1802,8 @@ mod tests {
|
||||
// Test program account not rent exempt
|
||||
bank.clear_signatures();
|
||||
bank.store_account(&buffer_address, &buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let message = Message::new(
|
||||
&bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
@ -1829,8 +1830,8 @@ mod tests {
|
||||
// Test program account not rent exempt because data is larger than needed
|
||||
bank.clear_signatures();
|
||||
bank.store_account(&buffer_address, &buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let mut instructions = bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
&program_keypair.pubkey(),
|
||||
@ -1862,8 +1863,8 @@ mod tests {
|
||||
// Test program account too small
|
||||
bank.clear_signatures();
|
||||
bank.store_account(&buffer_address, &buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let mut instructions = bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
&program_keypair.pubkey(),
|
||||
@ -1896,11 +1897,11 @@ mod tests {
|
||||
bank.clear_signatures();
|
||||
bank.store_account(
|
||||
&mint_keypair.pubkey(),
|
||||
&Account::new(min_program_balance, 0, &system_program::id()),
|
||||
&AccountSharedData::new(min_program_balance, 0, &system_program::id()),
|
||||
);
|
||||
bank.store_account(&buffer_address, &buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let message = Message::new(
|
||||
&bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
@ -1925,14 +1926,14 @@ mod tests {
|
||||
);
|
||||
bank.store_account(
|
||||
&mint_keypair.pubkey(),
|
||||
&Account::new(1_000_000_000, 0, &system_program::id()),
|
||||
&AccountSharedData::new(1_000_000_000, 0, &system_program::id()),
|
||||
);
|
||||
|
||||
// Test max_data_len
|
||||
bank.clear_signatures();
|
||||
bank.store_account(&buffer_address, &buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let message = Message::new(
|
||||
&bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
@ -1960,13 +1961,13 @@ mod tests {
|
||||
bank.clear_signatures();
|
||||
bank.store_account(
|
||||
&mint_keypair.pubkey(),
|
||||
&Account::new(u64::MAX / 2, 0, &system_program::id()),
|
||||
&AccountSharedData::new(u64::MAX / 2, 0, &system_program::id()),
|
||||
);
|
||||
let mut modified_buffer_account = buffer_account.clone();
|
||||
modified_buffer_account.lamports = u64::MAX / 2;
|
||||
bank.store_account(&buffer_address, &modified_buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let message = Message::new(
|
||||
&bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
@ -1993,8 +1994,8 @@ mod tests {
|
||||
// Test not the system account
|
||||
bank.clear_signatures();
|
||||
bank.store_account(&buffer_address, &buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let mut instructions = bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
&program_keypair.pubkey(),
|
||||
@ -2024,8 +2025,8 @@ mod tests {
|
||||
.data
|
||||
.truncate(UpgradeableLoaderState::buffer_len(1).unwrap());
|
||||
bank.store_account(&buffer_address, &modified_buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let message = Message::new(
|
||||
&bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
@ -2051,7 +2052,7 @@ mod tests {
|
||||
|
||||
// Test small buffer account
|
||||
bank.clear_signatures();
|
||||
let mut modified_buffer_account = Account::new(
|
||||
let mut modified_buffer_account = AccountSharedData::new(
|
||||
min_programdata_balance,
|
||||
UpgradeableLoaderState::buffer_len(elf.len()).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -2065,8 +2066,8 @@ mod tests {
|
||||
.copy_from_slice(&elf);
|
||||
modified_buffer_account.data.truncate(5);
|
||||
bank.store_account(&buffer_address, &modified_buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let message = Message::new(
|
||||
&bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
@ -2092,7 +2093,7 @@ mod tests {
|
||||
|
||||
// Mismatched buffer and program authority
|
||||
bank.clear_signatures();
|
||||
let mut modified_buffer_account = Account::new(
|
||||
let mut modified_buffer_account = AccountSharedData::new(
|
||||
min_programdata_balance,
|
||||
UpgradeableLoaderState::buffer_len(elf.len()).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -2105,8 +2106,8 @@ mod tests {
|
||||
modified_buffer_account.data[UpgradeableLoaderState::buffer_data_offset().unwrap()..]
|
||||
.copy_from_slice(&elf);
|
||||
bank.store_account(&buffer_address, &modified_buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let message = Message::new(
|
||||
&bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
@ -2132,7 +2133,7 @@ mod tests {
|
||||
|
||||
// Deploy buffer with mismatched None authority
|
||||
bank.clear_signatures();
|
||||
let mut modified_buffer_account = Account::new(
|
||||
let mut modified_buffer_account = AccountSharedData::new(
|
||||
min_programdata_balance,
|
||||
UpgradeableLoaderState::buffer_len(elf.len()).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -2145,8 +2146,8 @@ mod tests {
|
||||
modified_buffer_account.data[UpgradeableLoaderState::buffer_data_offset().unwrap()..]
|
||||
.copy_from_slice(&elf);
|
||||
bank.store_account(&buffer_address, &modified_buffer_account);
|
||||
bank.store_account(&program_keypair.pubkey(), &Account::default());
|
||||
bank.store_account(&programdata_address, &Account::default());
|
||||
bank.store_account(&program_keypair.pubkey(), &AccountSharedData::default());
|
||||
bank.store_account(&programdata_address, &AccountSharedData::default());
|
||||
let message = Message::new(
|
||||
&bpf_loader_upgradeable::deploy_with_max_program_len(
|
||||
&mint_keypair.pubkey(),
|
||||
@ -2202,7 +2203,7 @@ mod tests {
|
||||
let (programdata_address, _) =
|
||||
Pubkey::find_program_address(&[program_address.as_ref()], &id());
|
||||
let spill_address = Pubkey::new_unique();
|
||||
let upgrade_authority_account = Account::new_ref(1, 0, &Pubkey::new_unique());
|
||||
let upgrade_authority_account = AccountSharedData::new_ref(1, 0, &Pubkey::new_unique());
|
||||
|
||||
#[allow(clippy::type_complexity)]
|
||||
fn get_accounts(
|
||||
@ -2215,12 +2216,12 @@ mod tests {
|
||||
min_program_balance: u64,
|
||||
min_programdata_balance: u64,
|
||||
) -> (
|
||||
Rc<RefCell<Account>>,
|
||||
Rc<RefCell<Account>>,
|
||||
Rc<RefCell<Account>>,
|
||||
Rc<RefCell<Account>>,
|
||||
Rc<RefCell<AccountSharedData>>,
|
||||
Rc<RefCell<AccountSharedData>>,
|
||||
Rc<RefCell<AccountSharedData>>,
|
||||
Rc<RefCell<AccountSharedData>>,
|
||||
) {
|
||||
let buffer_account = Account::new_ref(
|
||||
let buffer_account = AccountSharedData::new_ref(
|
||||
1,
|
||||
UpgradeableLoaderState::buffer_len(elf_new.len()).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -2234,7 +2235,7 @@ mod tests {
|
||||
buffer_account.borrow_mut().data
|
||||
[UpgradeableLoaderState::buffer_data_offset().unwrap()..]
|
||||
.copy_from_slice(&elf_new);
|
||||
let programdata_account = Account::new_ref(
|
||||
let programdata_account = AccountSharedData::new_ref(
|
||||
min_programdata_balance,
|
||||
UpgradeableLoaderState::programdata_len(elf_orig.len().max(elf_new.len())).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -2246,7 +2247,7 @@ mod tests {
|
||||
upgrade_authority_address: Some(*upgrade_authority_address),
|
||||
})
|
||||
.unwrap();
|
||||
let program_account = Account::new_ref(
|
||||
let program_account = AccountSharedData::new_ref(
|
||||
min_program_balance,
|
||||
UpgradeableLoaderState::program_len().unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -2258,7 +2259,7 @@ mod tests {
|
||||
programdata_address: *programdata_address,
|
||||
})
|
||||
.unwrap();
|
||||
let spill_account = Account::new_ref(0, 0, &Pubkey::new_unique());
|
||||
let spill_account = AccountSharedData::new_ref(0, 0, &Pubkey::new_unique());
|
||||
|
||||
(
|
||||
buffer_account,
|
||||
@ -2648,7 +2649,7 @@ mod tests {
|
||||
min_program_balance,
|
||||
min_programdata_balance,
|
||||
);
|
||||
let buffer_account = Account::new_ref(
|
||||
let buffer_account = AccountSharedData::new_ref(
|
||||
1,
|
||||
UpgradeableLoaderState::buffer_len(elf_orig.len().max(elf_new.len()) + 1).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -2845,13 +2846,13 @@ mod tests {
|
||||
let instruction = bincode::serialize(&UpgradeableLoaderInstruction::SetAuthority).unwrap();
|
||||
let slot = 0;
|
||||
let upgrade_authority_address = Pubkey::new_unique();
|
||||
let upgrade_authority_account = Account::new_ref(1, 0, &Pubkey::new_unique());
|
||||
let upgrade_authority_account = AccountSharedData::new_ref(1, 0, &Pubkey::new_unique());
|
||||
let new_upgrade_authority_address = Pubkey::new_unique();
|
||||
let new_upgrade_authority_account = Account::new_ref(1, 0, &Pubkey::new_unique());
|
||||
let new_upgrade_authority_account = AccountSharedData::new_ref(1, 0, &Pubkey::new_unique());
|
||||
let program_address = Pubkey::new_unique();
|
||||
let (programdata_address, _) =
|
||||
Pubkey::find_program_address(&[program_address.as_ref()], &id());
|
||||
let programdata_account = Account::new_ref(
|
||||
let programdata_account = AccountSharedData::new_ref(
|
||||
1,
|
||||
UpgradeableLoaderState::programdata_len(0).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -3037,11 +3038,11 @@ mod tests {
|
||||
fn test_bpf_loader_upgradeable_set_buffer_authority() {
|
||||
let instruction = bincode::serialize(&UpgradeableLoaderInstruction::SetAuthority).unwrap();
|
||||
let authority_address = Pubkey::new_unique();
|
||||
let authority_account = Account::new_ref(1, 0, &Pubkey::new_unique());
|
||||
let authority_account = AccountSharedData::new_ref(1, 0, &Pubkey::new_unique());
|
||||
let new_authority_address = Pubkey::new_unique();
|
||||
let new_authority_account = Account::new_ref(1, 0, &Pubkey::new_unique());
|
||||
let new_authority_account = AccountSharedData::new_ref(1, 0, &Pubkey::new_unique());
|
||||
let buffer_address = Pubkey::new_unique();
|
||||
let buffer_account = Account::new_ref(
|
||||
let buffer_account = AccountSharedData::new_ref(
|
||||
1,
|
||||
UpgradeableLoaderState::buffer_len(0).unwrap(),
|
||||
&bpf_loader_upgradeable::id(),
|
||||
@ -3264,11 +3265,11 @@ mod tests {
|
||||
0..elf.len(),
|
||||
0..255,
|
||||
|bytes: &mut [u8]| {
|
||||
let program_account = Account::new_ref(1, 0, &program_id);
|
||||
let program_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
program_account.borrow_mut().data = bytes.to_vec();
|
||||
program_account.borrow_mut().executable = true;
|
||||
|
||||
let parameter_account = Account::new_ref(1, 0, &program_id);
|
||||
let parameter_account = AccountSharedData::new_ref(1, 0, &program_id);
|
||||
let keyed_accounts = vec![
|
||||
KeyedAccount::new(&program_key, false, &program_account),
|
||||
KeyedAccount::new(&program_key, false, ¶meter_account),
|
||||
|
@ -243,7 +243,7 @@ pub fn deserialize_parameters_aligned(
|
||||
mod tests {
|
||||
use super::*;
|
||||
use solana_sdk::{
|
||||
account::Account, account_info::AccountInfo, bpf_loader, entrypoint::deserialize,
|
||||
account::AccountSharedData, account_info::AccountInfo, bpf_loader, entrypoint::deserialize,
|
||||
};
|
||||
use std::{
|
||||
cell::RefCell,
|
||||
@ -263,7 +263,7 @@ mod tests {
|
||||
solana_sdk::pubkey::new_rand(),
|
||||
];
|
||||
let accounts = [
|
||||
RefCell::new(Account {
|
||||
RefCell::new(AccountSharedData {
|
||||
lamports: 1,
|
||||
data: vec![1u8, 2, 3, 4, 5],
|
||||
owner: bpf_loader::id(),
|
||||
@ -271,21 +271,21 @@ mod tests {
|
||||
rent_epoch: 100,
|
||||
}),
|
||||
// dup of first
|
||||
RefCell::new(Account {
|
||||
RefCell::new(AccountSharedData {
|
||||
lamports: 1,
|
||||
data: vec![1u8, 2, 3, 4, 5],
|
||||
owner: bpf_loader::id(),
|
||||
executable: false,
|
||||
rent_epoch: 100,
|
||||
}),
|
||||
RefCell::new(Account {
|
||||
RefCell::new(AccountSharedData {
|
||||
lamports: 2,
|
||||
data: vec![11u8, 12, 13, 14, 15, 16, 17, 18, 19],
|
||||
owner: bpf_loader::id(),
|
||||
executable: true,
|
||||
rent_epoch: 200,
|
||||
}),
|
||||
RefCell::new(Account {
|
||||
RefCell::new(AccountSharedData {
|
||||
lamports: 3,
|
||||
data: vec![],
|
||||
owner: bpf_loader::id(),
|
||||
|
@ -10,7 +10,7 @@ use solana_rbpf::{
|
||||
};
|
||||
use solana_runtime::message_processor::MessageProcessor;
|
||||
use solana_sdk::{
|
||||
account::Account,
|
||||
account::AccountSharedData,
|
||||
account_info::AccountInfo,
|
||||
account_utils::StateMut,
|
||||
bpf_loader, bpf_loader_deprecated,
|
||||
@ -851,9 +851,12 @@ struct AccountReferences<'a> {
|
||||
ref_to_len_in_vm: &'a mut u64,
|
||||
serialized_len_ptr: &'a mut u64,
|
||||
}
|
||||
type TranslatedAccount<'a> = (Rc<RefCell<Account>>, Option<AccountReferences<'a>>);
|
||||
type TranslatedAccount<'a> = (
|
||||
Rc<RefCell<AccountSharedData>>,
|
||||
Option<AccountReferences<'a>>,
|
||||
);
|
||||
type TranslatedAccounts<'a> = (
|
||||
Vec<Rc<RefCell<Account>>>,
|
||||
Vec<Rc<RefCell<AccountSharedData>>>,
|
||||
Vec<Option<AccountReferences<'a>>>,
|
||||
);
|
||||
|
||||
@ -1018,7 +1021,7 @@ impl<'a> SyscallInvokeSigned<'a> for SyscallInvokeSignedRust<'a> {
|
||||
};
|
||||
|
||||
Ok((
|
||||
Rc::new(RefCell::new(Account {
|
||||
Rc::new(RefCell::new(AccountSharedData {
|
||||
lamports: *lamports,
|
||||
data: data.to_vec(),
|
||||
executable: account_info.executable,
|
||||
@ -1301,7 +1304,7 @@ impl<'a> SyscallInvokeSigned<'a> for SyscallInvokeSignedC<'a> {
|
||||
)?;
|
||||
|
||||
Ok((
|
||||
Rc::new(RefCell::new(Account {
|
||||
Rc::new(RefCell::new(AccountSharedData {
|
||||
lamports: *lamports,
|
||||
data: data.to_vec(),
|
||||
executable: account_info.executable,
|
||||
@ -1512,9 +1515,9 @@ fn check_authorized_program(
|
||||
|
||||
fn get_upgradeable_executable(
|
||||
callee_program_id: &Pubkey,
|
||||
program_account: &RefCell<Account>,
|
||||
program_account: &RefCell<AccountSharedData>,
|
||||
invoke_context: &Ref<&mut dyn InvokeContext>,
|
||||
) -> Result<Option<(Pubkey, RefCell<Account>)>, EbpfError<BpfError>> {
|
||||
) -> Result<Option<(Pubkey, RefCell<AccountSharedData>)>, EbpfError<BpfError>> {
|
||||
if program_account.borrow().owner == bpf_loader_upgradeable::id() {
|
||||
match program_account.borrow().state() {
|
||||
Ok(UpgradeableLoaderState::Program {
|
||||
|
Reference in New Issue
Block a user