From a09e8397fbd3288b32ab2d7d100582bd7b20094e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Mei=C3=9Fner?= Date: Mon, 13 Dec 2021 22:08:28 +0100 Subject: [PATCH] Bump solana_rbpf to version 0.2.12 (#17585) Unify BPF verifiers. --- Cargo.lock | 4 ++-- cli/Cargo.toml | 2 +- cli/src/program.rs | 9 ++++++--- programs/bpf/Cargo.lock | 4 ++-- programs/bpf/Cargo.toml | 2 +- programs/bpf_loader/Cargo.toml | 2 +- programs/bpf_loader/src/lib.rs | 11 +++++------ 7 files changed, 18 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 37405dfdc3..042c2f8021 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5887,9 +5887,9 @@ dependencies = [ [[package]] name = "solana_rbpf" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c1c5bdfa63c68d848d95024c7f4335bae4b1917f7df2e48e2d945f4664a8b45" +checksum = "c44596a3613a44f76a7f6e5205464a1e78d1529fa19e8eacde0b9e55a6387f50" dependencies = [ "byteorder", "combine", diff --git a/cli/Cargo.toml b/cli/Cargo.toml index f6c8bd1743..08fa8e4ec4 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -40,7 +40,7 @@ solana-config-program = { path = "../programs/config", version = "=1.8.11" } solana-faucet = { path = "../faucet", version = "=1.8.11" } solana-logger = { path = "../logger", version = "=1.8.11" } solana-net-utils = { path = "../net-utils", version = "=1.8.11" } -solana_rbpf = "=0.2.11" +solana_rbpf = "=0.2.12" solana-remote-wallet = { path = "../remote-wallet", version = "=1.8.11" } solana-sdk = { path = "../sdk", version = "=1.8.11" } solana-transaction-status = { path = "../transaction-status", version = "=1.8.11" } diff --git a/cli/src/program.rs b/cli/src/program.rs index 2ff65641fa..7a931f0c3a 100644 --- a/cli/src/program.rs +++ b/cli/src/program.rs @@ -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::{bpf_verifier, BpfError, ThisInstructionMeter}; +use solana_bpf_loader_program::{BpfError, ThisInstructionMeter}; use solana_clap_utils::{self, input_parsers::*, input_validators::*, keypair::*}; use solana_cli_output::{ CliProgram, CliProgramAccountType, CliProgramAuthority, CliProgramBuffer, CliProgramId, @@ -24,7 +24,10 @@ use solana_client::{ rpc_filter::{Memcmp, MemcmpEncodedBytes, RpcFilterType}, tpu_client::{TpuClient, TpuClientConfig}, }; -use solana_rbpf::vm::{Config, Executable}; +use solana_rbpf::{ + verifier, + vm::{Config, Executable}, +}; use solana_remote_wallet::remote_wallet::RemoteWalletManager; use solana_sdk::{ account::Account, @@ -1987,7 +1990,7 @@ fn read_and_verify_elf(program_location: &str) -> Result, Box>::from_elf( &program_data, - Some(|x| bpf_verifier::check(x)), + Some(|x| verifier::check(x)), Config::default(), ) .map_err(|err| format!("ELF error: {}", err))?; diff --git a/programs/bpf/Cargo.lock b/programs/bpf/Cargo.lock index dc60fb2a58..025ae19fa1 100644 --- a/programs/bpf/Cargo.lock +++ b/programs/bpf/Cargo.lock @@ -3699,9 +3699,9 @@ dependencies = [ [[package]] name = "solana_rbpf" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c1c5bdfa63c68d848d95024c7f4335bae4b1917f7df2e48e2d945f4664a8b45" +checksum = "c44596a3613a44f76a7f6e5205464a1e78d1529fa19e8eacde0b9e55a6387f50" dependencies = [ "byteorder 1.3.4", "combine", diff --git a/programs/bpf/Cargo.toml b/programs/bpf/Cargo.toml index bbf51339a9..234cea49e7 100644 --- a/programs/bpf/Cargo.toml +++ b/programs/bpf/Cargo.toml @@ -30,7 +30,7 @@ solana-bpf-loader-program = { path = "../bpf_loader", version = "=1.8.11" } solana-cli-output = { path = "../../cli-output", version = "=1.8.11" } solana-logger = { path = "../../logger", version = "=1.8.11" } solana-measure = { path = "../../measure", version = "=1.8.11" } -solana_rbpf = "=0.2.11" +solana_rbpf = "=0.2.12" solana-runtime = { path = "../../runtime", version = "=1.8.11" } solana-sdk = { path = "../../sdk", version = "=1.8.11" } solana-transaction-status = { path = "../../transaction-status", version = "=1.8.11" } diff --git a/programs/bpf_loader/Cargo.toml b/programs/bpf_loader/Cargo.toml index b54225dd59..8f7097e4b7 100644 --- a/programs/bpf_loader/Cargo.toml +++ b/programs/bpf_loader/Cargo.toml @@ -22,7 +22,7 @@ sha3 = "0.9.1" solana-measure = { path = "../../measure", version = "=1.8.11" } solana-runtime = { path = "../../runtime", version = "=1.8.11" } solana-sdk = { path = "../../sdk", version = "=1.8.11" } -solana_rbpf = "=0.2.11" +solana_rbpf = "=0.2.12" thiserror = "1.0" [dev-dependencies] diff --git a/programs/bpf_loader/src/lib.rs b/programs/bpf_loader/src/lib.rs index 3352c9d0f9..8bc01fb3ae 100644 --- a/programs/bpf_loader/src/lib.rs +++ b/programs/bpf_loader/src/lib.rs @@ -1,7 +1,6 @@ #![allow(clippy::integer_arithmetic)] pub mod alloc; pub mod allocator_bump; -pub mod bpf_verifier; pub mod deprecated; pub mod serialization; pub mod syscalls; @@ -10,7 +9,6 @@ pub mod upgradeable_with_jit; pub mod with_jit; use crate::{ - bpf_verifier::VerifierError, serialization::{deserialize_parameters, serialize_parameters}, syscalls::SyscallError, }; @@ -22,6 +20,7 @@ use solana_rbpf::{ error::{EbpfError, UserDefinedError}, memory_region::MemoryRegion, static_analysis::Analysis, + verifier::{self, VerifierError}, vm::{Config, EbpfVm, Executable, InstructionMeter}, }; use solana_runtime::message_processor::MessageProcessor; @@ -100,8 +99,8 @@ pub fn create_executor( let (_, elf_bytes) = executable .get_text_bytes() .map_err(|e| map_ebpf_error(invoke_context, e))?; - bpf_verifier::check(elf_bytes) - .map_err(|e| map_ebpf_error(invoke_context, EbpfError::UserError(e)))?; + verifier::check(elf_bytes) + .map_err(|e| map_ebpf_error(invoke_context, EbpfError::UserError(e.into())))?; executable.set_syscall_registry(syscall_registry); if use_jit { if let Err(err) = executable.jit_compile() { @@ -1067,12 +1066,12 @@ mod tests { } #[test] - #[should_panic(expected = "VerifierError(LDDWCannotBeLast)")] + #[should_panic(expected = "LDDWCannotBeLast")] fn test_bpf_loader_check_load_dw() { let prog = &[ 0x18, 0x00, 0x00, 0x00, 0x88, 0x77, 0x66, 0x55, // first half of lddw ]; - bpf_verifier::check(prog).unwrap(); + verifier::check(prog).unwrap(); } #[test]