diff --git a/Cargo.lock b/Cargo.lock index d082a00f393..ac7fb185538 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6627,7 +6627,7 @@ dependencies = [ "solana-instruction", "solana-keccak-hasher", "solana-last-restart-slot", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-log-collector", "solana-measure", @@ -6662,7 +6662,7 @@ dependencies = [ "assert_matches", "bincode", "solana-bpf-loader-program", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-program-test", "solana-sdk", ] @@ -7799,7 +7799,7 @@ dependencies = [ "solana-cli-config", "solana-entry", "solana-ledger", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-logger", "solana-rpc-client", "solana-rpc-client-api", @@ -8241,6 +8241,21 @@ dependencies = [ "solana-system-interface", ] +[[package]] +name = "solana-loader-v3-interface" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + [[package]] name = "solana-loader-v4-interface" version = "2.2.1" @@ -8269,7 +8284,7 @@ dependencies = [ "solana-clock", "solana-compute-budget", "solana-instruction", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-log-collector", "solana-measure", @@ -9399,7 +9414,7 @@ dependencies = [ "solana-frozen-abi-macro", "solana-inline-spl", "solana-lattice-hash", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-logger", "solana-measure", @@ -10046,7 +10061,7 @@ dependencies = [ "solana-instruction", "solana-instructions-sysvar", "solana-keypair", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-loader-v4-program", "solana-log-collector", @@ -10591,7 +10606,7 @@ dependencies = [ "solana-hash", "solana-instruction", "solana-loader-v2-interface", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-message", "solana-program", "solana-pubkey", diff --git a/Cargo.toml b/Cargo.toml index 38f7c76e391..ea6ff1508e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -446,7 +446,7 @@ solana-last-restart-slot = "2.2.1" solana-lattice-hash = { path = "lattice-hash", version = "=2.2.16" } solana-ledger = { path = "ledger", version = "=2.2.16" } solana-loader-v2-interface = "2.2.1" -solana-loader-v3-interface = "4.0.1" +solana-loader-v3-interface = "5.0.0" solana-loader-v4-interface = "2.2.1" solana-loader-v4-program = { path = "programs/loader-v4", version = "=2.2.16" } solana-local-cluster = { path = "local-cluster", version = "=2.2.16" } diff --git a/feature-set/src/lib.rs b/feature-set/src/lib.rs index 2415ea20ac6..f8085fd3d7c 100644 --- a/feature-set/src/lib.rs +++ b/feature-set/src/lib.rs @@ -1018,7 +1018,7 @@ pub mod mask_out_rent_epoch_in_vm_serialization { } pub mod enable_extend_program_checked { - solana_pubkey::declare_id!("97QCmR4QtfeQsAti9srfHFk5uMRFP95CvXG8EGr615HM"); + solana_pubkey::declare_id!("2oMRZEDWT2tqtYMofhmmfQ8SsjqUFzT6sYXppQDavxwz"); } pub static FEATURE_NAMES: LazyLock> = LazyLock::new(|| { diff --git a/genesis/Cargo.toml b/genesis/Cargo.toml index 82eedd77dd7..42a5866e2a5 100644 --- a/genesis/Cargo.toml +++ b/genesis/Cargo.toml @@ -23,7 +23,7 @@ solana-clap-utils = { workspace = true } solana-cli-config = { workspace = true } solana-entry = { workspace = true } solana-ledger = { workspace = true } -solana-loader-v3-interface = "=4.0.1" +solana-loader-v3-interface = "5.0.0" solana-logger = "=2.3.1" solana-rpc-client = { workspace = true } solana-rpc-client-api = { workspace = true } diff --git a/programs/bpf_loader/src/syscalls/cpi.rs b/programs/bpf_loader/src/syscalls/cpi.rs index 1041952308f..e0bfde29440 100644 --- a/programs/bpf_loader/src/syscalls/cpi.rs +++ b/programs/bpf_loader/src/syscalls/cpi.rs @@ -1,7 +1,9 @@ use { super::*, crate::serialization::account_data_region_memory_state, - agave_feature_set::enable_bpf_loader_set_authority_checked_ix, + agave_feature_set::{ + enable_bpf_loader_set_authority_checked_ix, enable_extend_program_checked, + }, scopeguard::defer, solana_loader_v3_interface::instruction as bpf_loader_upgradeable, solana_measure::measure::Measure, @@ -1067,6 +1069,12 @@ fn check_authorized_program( && bpf_loader_upgradeable::is_set_authority_checked_instruction( instruction_data, )) + || (invoke_context + .get_feature_set() + .is_active(&enable_extend_program_checked::id()) + && bpf_loader_upgradeable::is_extend_program_checked_instruction( + instruction_data, + )) || bpf_loader_upgradeable::is_close_instruction(instruction_data))) || is_precompile(program_id, |feature_id: &Pubkey| { invoke_context.get_feature_set().is_active(feature_id) diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 3a6463253d5..fa881656884 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -5364,7 +5364,7 @@ dependencies = [ "solana-hash", "solana-instruction", "solana-keccak-hasher", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-log-collector", "solana-measure", @@ -6482,9 +6482,9 @@ dependencies = [ [[package]] name = "solana-loader-v3-interface" -version = "4.0.1" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5539bcadd5c3b306045563e9d102bbaa42b3643f335ae02bc9b5260a70ad9742" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" dependencies = [ "serde", "serde_bytes", @@ -6521,7 +6521,7 @@ dependencies = [ "solana-bpf-loader-program", "solana-compute-budget", "solana-instruction", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-log-collector", "solana-measure", @@ -7398,7 +7398,7 @@ dependencies = [ "solana-fee", "solana-inline-spl", "solana-lattice-hash", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-measure", "solana-metrics", @@ -7481,7 +7481,7 @@ dependencies = [ "solana-compute-budget-instruction", "solana-fee", "solana-ledger", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-log-collector", "solana-logger", @@ -8457,7 +8457,7 @@ dependencies = [ "solana-hash", "solana-instruction", "solana-instructions-sysvar", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-loader-v4-program", "solana-log-collector", @@ -8824,7 +8824,7 @@ dependencies = [ "solana-hash", "solana-instruction", "solana-loader-v2-interface", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-message", "solana-program", "solana-pubkey", diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index bbbd3e5af84..1cee94389de 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -124,7 +124,7 @@ solana-compute-budget-instruction = { workspace = true, features = [ ] } solana-fee = { workspace = true } solana-ledger = { workspace = true } -solana-loader-v3-interface = "4.0.1" +solana-loader-v3-interface = "5.0.0" solana-loader-v4-interface = "2.2.1" solana-log-collector = { workspace = true } solana-logger = { workspace = true } diff --git a/svm/examples/Cargo.lock b/svm/examples/Cargo.lock index 4da0eac4b91..e206a1c7aa3 100644 --- a/svm/examples/Cargo.lock +++ b/svm/examples/Cargo.lock @@ -5231,7 +5231,7 @@ dependencies = [ "solana-hash", "solana-instruction", "solana-keccak-hasher", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-log-collector", "solana-measure", @@ -6315,9 +6315,9 @@ dependencies = [ [[package]] name = "solana-loader-v3-interface" -version = "4.0.1" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5539bcadd5c3b306045563e9d102bbaa42b3643f335ae02bc9b5260a70ad9742" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" dependencies = [ "serde", "serde_bytes", @@ -6354,7 +6354,7 @@ dependencies = [ "solana-bpf-loader-program", "solana-compute-budget", "solana-instruction", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-log-collector", "solana-measure", @@ -7231,7 +7231,7 @@ dependencies = [ "solana-fee", "solana-inline-spl", "solana-lattice-hash", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-measure", "solana-metrics", @@ -7785,7 +7785,7 @@ dependencies = [ "solana-hash", "solana-instruction", "solana-instructions-sysvar", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-loader-v4-program", "solana-log-collector", @@ -8171,7 +8171,7 @@ dependencies = [ "solana-hash", "solana-instruction", "solana-loader-v2-interface", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface 5.0.0", "solana-message", "solana-program", "solana-pubkey",