* Check ELF file for errors before deploy (#12741)
* Check ELF file for errors before deploy
* Update cli/src/cli.rs
Co-authored-by: Michael Vines <mvines@gmail.com>
* Fix formatting
* Bump solana_rbpf
Co-authored-by: Michael Vines <mvines@gmail.com>
(cherry picked from commit 6bbf6a79b7
)
# Conflicts:
# Cargo.lock
# cli/Cargo.toml
# cli/src/cli.rs
* rebase
Co-authored-by: Alexandre Esteves <2335822+alexfmpe@users.noreply.github.com>
Co-authored-by: Michael Vines <mvines@gmail.com>
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -3569,6 +3569,7 @@ dependencies = [
|
|||||||
"serde_derive",
|
"serde_derive",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"solana-account-decoder",
|
"solana-account-decoder",
|
||||||
|
"solana-bpf-loader-program",
|
||||||
"solana-budget-program",
|
"solana-budget-program",
|
||||||
"solana-clap-utils",
|
"solana-clap-utils",
|
||||||
"solana-cli-config",
|
"solana-cli-config",
|
||||||
@ -3587,6 +3588,7 @@ dependencies = [
|
|||||||
"solana-version",
|
"solana-version",
|
||||||
"solana-vote-program",
|
"solana-vote-program",
|
||||||
"solana-vote-signer",
|
"solana-vote-signer",
|
||||||
|
"solana_rbpf",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"url 2.1.1",
|
"url 2.1.1",
|
||||||
|
@ -29,6 +29,7 @@ serde_derive = "1.0.103"
|
|||||||
serde_json = "1.0.56"
|
serde_json = "1.0.56"
|
||||||
solana-account-decoder = { path = "../account-decoder", version = "1.3.18" }
|
solana-account-decoder = { path = "../account-decoder", version = "1.3.18" }
|
||||||
solana-budget-program = { path = "../programs/budget", version = "1.3.18" }
|
solana-budget-program = { path = "../programs/budget", version = "1.3.18" }
|
||||||
|
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.3.18" }
|
||||||
solana-clap-utils = { path = "../clap-utils", version = "1.3.18" }
|
solana-clap-utils = { path = "../clap-utils", version = "1.3.18" }
|
||||||
solana-cli-config = { path = "../cli-config", version = "1.3.18" }
|
solana-cli-config = { path = "../cli-config", version = "1.3.18" }
|
||||||
solana-cli-output = { path = "../cli-output", version = "1.3.18" }
|
solana-cli-output = { path = "../cli-output", version = "1.3.18" }
|
||||||
@ -37,6 +38,7 @@ solana-config-program = { path = "../programs/config", version = "1.3.18" }
|
|||||||
solana-faucet = { path = "../faucet", version = "1.3.18" }
|
solana-faucet = { path = "../faucet", version = "1.3.18" }
|
||||||
solana-logger = { path = "../logger", version = "1.3.18" }
|
solana-logger = { path = "../logger", version = "1.3.18" }
|
||||||
solana-net-utils = { path = "../net-utils", version = "1.3.18" }
|
solana-net-utils = { path = "../net-utils", version = "1.3.18" }
|
||||||
|
solana_rbpf = "=0.1.32"
|
||||||
solana-remote-wallet = { path = "../remote-wallet", version = "1.3.18" }
|
solana-remote-wallet = { path = "../remote-wallet", version = "1.3.18" }
|
||||||
solana-runtime = { path = "../runtime", version = "1.3.18" }
|
solana-runtime = { path = "../runtime", version = "1.3.18" }
|
||||||
solana-sdk = { path = "../sdk", version = "1.3.18" }
|
solana-sdk = { path = "../sdk", version = "1.3.18" }
|
||||||
|
@ -8,6 +8,7 @@ use log::*;
|
|||||||
use num_traits::FromPrimitive;
|
use num_traits::FromPrimitive;
|
||||||
use serde_json::{self, json, Value};
|
use serde_json::{self, json, Value};
|
||||||
use solana_account_decoder::{UiAccount, UiAccountEncoding};
|
use solana_account_decoder::{UiAccount, UiAccountEncoding};
|
||||||
|
use solana_bpf_loader_program::bpf_verifier;
|
||||||
use solana_budget_program::budget_instruction::{self, BudgetError};
|
use solana_budget_program::budget_instruction::{self, BudgetError};
|
||||||
use solana_clap_utils::{
|
use solana_clap_utils::{
|
||||||
self,
|
self,
|
||||||
@ -38,6 +39,7 @@ use solana_client::{
|
|||||||
use solana_faucet::faucet::request_airdrop_transaction;
|
use solana_faucet::faucet::request_airdrop_transaction;
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
use solana_faucet::faucet_mock::request_airdrop_transaction;
|
use solana_faucet::faucet_mock::request_airdrop_transaction;
|
||||||
|
use solana_rbpf::vm::EbpfVm;
|
||||||
use solana_remote_wallet::remote_wallet::RemoteWalletManager;
|
use solana_remote_wallet::remote_wallet::RemoteWalletManager;
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
bpf_loader, bpf_loader_deprecated,
|
bpf_loader, bpf_loader_deprecated,
|
||||||
@ -1252,6 +1254,9 @@ fn process_deploy(
|
|||||||
CliError::DynamicProgramError(format!("Unable to read program file: {}", err))
|
CliError::DynamicProgramError(format!("Unable to read program file: {}", err))
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
EbpfVm::create_executable_from_elf(&program_data, Some(|x| bpf_verifier::check(x, true)))
|
||||||
|
.map_err(|err| CliError::DynamicProgramError(format!("ELF error: {}", err)))?;
|
||||||
|
|
||||||
let loader_id = if use_deprecated_loader {
|
let loader_id = if use_deprecated_loader {
|
||||||
bpf_loader_deprecated::id()
|
bpf_loader_deprecated::id()
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user