This commit is contained in:
Alexander Meißner
2021-11-17 10:31:07 +01:00
committed by GitHub
parent c53174dc56
commit 318d26f0ff
13 changed files with 371 additions and 114 deletions

View File

@@ -40,7 +40,7 @@ solana-config-program = { path = "../programs/config", version = "=1.8.5" }
solana-faucet = { path = "../faucet", version = "=1.8.5" }
solana-logger = { path = "../logger", version = "=1.8.5" }
solana-net-utils = { path = "../net-utils", version = "=1.8.5" }
solana_rbpf = "=0.2.13"
solana_rbpf = "=0.2.11"
solana-remote-wallet = { path = "../remote-wallet", version = "=1.8.5" }
solana-sdk = { path = "../sdk", version = "=1.8.5" }
solana-transaction-status = { path = "../transaction-status", version = "=1.8.5" }

View File

@@ -9,7 +9,7 @@ use bip39::{Language, Mnemonic, MnemonicType, Seed};
use clap::{App, AppSettings, Arg, ArgMatches, SubCommand};
use log::*;
use solana_account_decoder::{UiAccountEncoding, UiDataSliceConfig};
use solana_bpf_loader_program::{syscalls::register_syscalls, BpfError, ThisInstructionMeter};
use solana_bpf_loader_program::{bpf_verifier, BpfError, ThisInstructionMeter};
use solana_clap_utils::{self, input_parsers::*, input_validators::*, keypair::*};
use solana_cli_output::{
CliProgram, CliProgramAccountType, CliProgramAuthority, CliProgramBuffer, CliProgramId,
@@ -24,10 +24,7 @@ use solana_client::{
rpc_filter::{Memcmp, MemcmpEncodedBytes, RpcFilterType},
tpu_client::{TpuClient, TpuClientConfig},
};
use solana_rbpf::{
verifier,
vm::{Config, Executable},
};
use solana_rbpf::vm::{Config, Executable};
use solana_remote_wallet::remote_wallet::RemoteWalletManager;
use solana_sdk::{
account::Account,
@@ -40,7 +37,6 @@ use solana_sdk::{
message::Message,
native_token::Sol,
packet::PACKET_DATA_SIZE,
process_instruction::MockInvokeContext,
pubkey::Pubkey,
signature::{keypair_from_seed, read_keypair_file, Keypair, Signature, Signer},
system_instruction::{self, SystemError},
@@ -1987,17 +1983,12 @@ fn read_and_verify_elf(program_location: &str) -> Result<Vec<u8>, Box<dyn std::e
let mut program_data = Vec::new();
file.read_to_end(&mut program_data)
.map_err(|err| format!("Unable to read program file: {}", err))?;
let mut invoke_context = MockInvokeContext::new(vec![]);
// Verify the program
<dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(
&program_data,
Some(verifier::check),
Config {
reject_unresolved_syscalls: true,
..Config::default()
},
register_syscalls(&mut invoke_context).unwrap(),
Some(|x| bpf_verifier::check(x)),
Config::default(),
)
.map_err(|err| format!("ELF error: {}", err))?;

Binary file not shown.