diff --git a/Cargo.lock b/Cargo.lock index c72f68f5..8e5e096f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -474,7 +474,7 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "ledger_device_sdk" -version = "1.15.1" +version = "1.15.2" dependencies = [ "const-zero", "include_gif", @@ -489,7 +489,7 @@ dependencies = [ [[package]] name = "ledger_secure_sdk_sys" -version = "1.4.5" +version = "1.4.6" dependencies = [ "bindgen", "cc", diff --git a/ledger_device_sdk/Cargo.toml b/ledger_device_sdk/Cargo.toml index d512961f..3b32401d 100644 --- a/ledger_device_sdk/Cargo.toml +++ b/ledger_device_sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ledger_device_sdk" -version = "1.15.1" +version = "1.15.2" authors = ["yhql", "yogh333", "agrojean-ledger", "kingofpayne"] edition = "2021" license.workspace = true @@ -21,7 +21,7 @@ rand_core = { version = "0.6.3", default_features = false } zeroize = { version = "1.6.0", default_features = false } numtoa = "0.2.4" const-zero = "0.1.1" -ledger_secure_sdk_sys = { path = "../ledger_secure_sdk_sys", version = "1.4.5" } +ledger_secure_sdk_sys = { path = "../ledger_secure_sdk_sys", version = "1.4.6" } [features] speculos = [] diff --git a/ledger_secure_sdk_sys/Cargo.toml b/ledger_secure_sdk_sys/Cargo.toml index 46c34a14..1f7b853d 100644 --- a/ledger_secure_sdk_sys/Cargo.toml +++ b/ledger_secure_sdk_sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ledger_secure_sdk_sys" -version = "1.4.5" +version = "1.4.6" authors = ["yhql", "agrojean-ledger"] edition = "2021" license.workspace = true diff --git a/ledger_secure_sdk_sys/build.rs b/ledger_secure_sdk_sys/build.rs index 3d906771..0cb60e86 100644 --- a/ledger_secure_sdk_sys/build.rs +++ b/ledger_secure_sdk_sys/build.rs @@ -1,5 +1,6 @@ extern crate cc; use glob::glob; +use std::fs; use std::path::{Path, PathBuf}; use std::process::Command; use std::{env, fs::File, io::BufRead, io::BufReader, io::Read}; @@ -581,6 +582,20 @@ impl SDKBuilder { .write_to_file(out_path.join("bindings.rs")) .expect("Couldn't write bindings"); } + + fn generate_heap_size(&self) { + // Read the HEAP_SIZE environment variable, default to 8192 if not set + let heap_size = env::var("HEAP_SIZE").unwrap_or_else(|_| "8192".to_string()); + + // Generate the heap_size.rs file with the HEAP_SIZE value + let out_dir = env::var("OUT_DIR").unwrap(); + let dest_path = Path::new(&out_dir).join("heap_size.rs"); + fs::write( + &dest_path, + format!("pub const HEAP_SIZE: usize = {};", heap_size), + ) + .expect("Unable to write file"); + } } fn main() { @@ -591,6 +606,7 @@ fn main() { sdk_builder.cxdefines(); sdk_builder.build_c_sdk(); sdk_builder.generate_bindings(); + sdk_builder.generate_heap_size(); } fn finalize_nanos_configuration(command: &mut cc::Build, bolos_sdk: &Path) { diff --git a/ledger_secure_sdk_sys/src/lib.rs b/ledger_secure_sdk_sys/src/lib.rs index c3f06b13..3039f88c 100644 --- a/ledger_secure_sdk_sys/src/lib.rs +++ b/ledger_secure_sdk_sys/src/lib.rs @@ -63,7 +63,7 @@ unsafe impl critical_section::Impl for CriticalSection { #[no_mangle] #[cfg(all(feature = "heap", not(target_os = "nanos")))] extern "C" fn heap_init() { - const HEAP_SIZE: usize = 8192; + // HEAP_SIZE comes from heap_size.rs, which is defined via env var and build.rs static mut HEAP_MEM: [MaybeUninit; HEAP_SIZE] = [MaybeUninit::uninit(); HEAP_SIZE]; unsafe { HEAP.init(HEAP_MEM.as_ptr() as usize, HEAP_SIZE) } } @@ -73,3 +73,4 @@ extern "C" fn heap_init() { extern "C" fn heap_init() {} include!(concat!(env!("OUT_DIR"), "/bindings.rs")); +include!(concat!(env!("OUT_DIR"), "/heap_size.rs"));