From a65b40de3fd22c4a7e65ef2b3db469ff2693b1ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Cabrera?= Date: Tue, 21 Jan 2025 10:11:52 -0500 Subject: [PATCH 1/3] Add audit for `wasmtime-math` (#10059) I noticed that CI is failing given that an audit and policy for `wasmtime-math` is missing. `wasmtime-math` was introduced in https://github.com/bytecodealliance/wasmtime/pull/9808/files. I followed a similar approach to what it's used for all the other `wasmtime-*` crates. --- supply-chain/audits.toml | 8 ++++++++ supply-chain/config.toml | 3 +++ supply-chain/imports.lock | 14 ++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml index e6ce2a06b15b..50058b08d857 100644 --- a/supply-chain/audits.toml +++ b/supply-chain/audits.toml @@ -489,6 +489,14 @@ start = "2022-11-21" end = "2025-07-30" notes = "The Bytecode Alliance is the author of this crate." +[[wildcard-audits.wasmtime-math]] +who = "Saúl Cabrera " +criteria = "safe-to-deploy" +user-id = 73222 # wasmtime-publish +start = "2025-01-20" +end = "2026-01-21" +notes = "The Bytecode Alliance is the author of this crate." + [[wildcard-audits.wasmtime-runtime]] who = "Bobby Holley " criteria = "safe-to-deploy" diff --git a/supply-chain/config.toml b/supply-chain/config.toml index 5384b5f59c05..a971945479c7 100644 --- a/supply-chain/config.toml +++ b/supply-chain/config.toml @@ -142,6 +142,9 @@ audit-as-crates-io = true [policy.wasmtime-jit-icache-coherence] audit-as-crates-io = true +[policy.wasmtime-math] +audit-as-crates-io = true + [policy.wasmtime-slab] audit-as-crates-io = true diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock index 4261bd1ab592..5cf9eb6c4021 100644 --- a/supply-chain/imports.lock +++ b/supply-chain/imports.lock @@ -257,6 +257,14 @@ audited_as = "26.0.1" version = "29.0.0" audited_as = "27.0.0" +[[unpublished.wasmtime-jit-icache-coherence]] +version = "30.0.0" +audited_as = "28.0.0" + +[[unpublished.wasmtime-math]] +version = "30.0.0" +audited_as = "29.0.0" + [[unpublished.wasmtime-slab]] version = "28.0.0" audited_as = "26.0.1" @@ -1299,6 +1307,12 @@ when = "2024-11-20" user-id = 73222 user-login = "wasmtime-publish" +[[publisher.wasmtime-math]] +version = "29.0.0" +when = "2025-01-20" +user-id = 73222 +user-login = "wasmtime-publish" + [[publisher.wasmtime-slab]] version = "27.0.0" when = "2024-11-20" From ce4a5eb746e2f1600bb08408114910223b53d512 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Jan 2025 12:06:17 -0600 Subject: [PATCH 2/3] Fix a missing increment in p1-to-p2 adapter (#10064) This commit fixes a bug in the WASIp1-to-WASIp2 adapter during `fd_prestat_dir_name` where an iterator variable was forgotten to be incremented. That means that getting the path for anything other than the first preopen didn't work correctly. Closes #10058 --- Cargo.lock | 29 +++++++++++++++---- crates/test-programs/Cargo.toml | 1 + .../src/bin/cli_multiple_preopens.rs | 29 +++++++++++++++++++ .../src/lib.rs | 1 + supply-chain/audits.toml | 6 ++++ supply-chain/imports.lock | 13 +++++++++ tests/all/cli_tests.rs | 12 ++++++++ 7 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 crates/test-programs/src/bin/cli_multiple_preopens.rs diff --git a/Cargo.lock b/Cargo.lock index 877eeae09edf..d1e48054b144 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1504,7 +1504,7 @@ checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] @@ -2135,7 +2135,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.48.0", ] @@ -3196,7 +3196,8 @@ dependencies = [ "libc", "sha2", "url", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.14.0+wasi-0.2.3", "wasi-nn", "wit-bindgen", ] @@ -3662,6 +3663,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.0+wasi-0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d67b0bdfec72b9fbaba698033291c327ef19ce3b34efbdcd7dc402a53850d9" +dependencies = [ + "wit-bindgen-rt 0.37.0", +] + [[package]] name = "wasi-common" version = "29.0.0" @@ -3708,7 +3718,7 @@ dependencies = [ "bitflags 2.6.0", "byte-array-literals", "object", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "wasm-encoder 0.221.2", "wit-bindgen-rust-macro", ] @@ -4969,7 +4979,7 @@ version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c966692b6d8c4bb3c1aee3313e0930f44457a5763cfffb666f814506124e4691" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen-rt 0.35.0", "wit-bindgen-rust-macro", ] @@ -4993,6 +5003,15 @@ dependencies = [ "bitflags 2.6.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc801b991c56492f87ab3086e786468f75c285a4d73017ab0ebc2fa1aed5d82c" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "wit-bindgen-rust" version = "0.35.0" diff --git a/crates/test-programs/Cargo.toml b/crates/test-programs/Cargo.toml index baff3bba8b79..ec734b766b03 100644 --- a/crates/test-programs/Cargo.toml +++ b/crates/test-programs/Cargo.toml @@ -21,3 +21,4 @@ futures = { workspace = true, default-features = false, features = ['alloc'] } url = { workspace = true } sha2 = "0.10.2" base64 = "0.21.0" +wasip2 = { version = "0.14.0", package = 'wasi' } diff --git a/crates/test-programs/src/bin/cli_multiple_preopens.rs b/crates/test-programs/src/bin/cli_multiple_preopens.rs new file mode 100644 index 000000000000..4c1dfd7beadf --- /dev/null +++ b/crates/test-programs/src/bin/cli_multiple_preopens.rs @@ -0,0 +1,29 @@ +use std::str; + +fn main() { + dbg!(wasip2::filesystem::preopens::get_directories()); + unsafe { + let p3 = wasi::fd_prestat_get(3).unwrap(); + let p4 = wasi::fd_prestat_get(4).unwrap(); + let p5 = wasi::fd_prestat_get(5).unwrap(); + assert_eq!(wasi::fd_prestat_get(6).err().unwrap(), wasi::ERRNO_BADF); + + assert_eq!(p3.u.dir.pr_name_len, 2); + assert_eq!(p4.u.dir.pr_name_len, 2); + assert_eq!(p5.u.dir.pr_name_len, 2); + + let mut buf = [0; 100]; + + wasi::fd_prestat_dir_name(3, buf.as_mut_ptr(), buf.len()).unwrap(); + assert_eq!(str::from_utf8(&buf[..2]).unwrap(), "/a"); + wasi::fd_prestat_dir_name(4, buf.as_mut_ptr(), buf.len()).unwrap(); + assert_eq!(str::from_utf8(&buf[..2]).unwrap(), "/b"); + wasi::fd_prestat_dir_name(5, buf.as_mut_ptr(), buf.len()).unwrap(); + assert_eq!(str::from_utf8(&buf[..2]).unwrap(), "/c"); + assert_eq!( + wasi::fd_prestat_dir_name(6, buf.as_mut_ptr(), buf.len()), + Err(wasi::ERRNO_BADF), + ); + } + // .. +} diff --git a/crates/wasi-preview1-component-adapter/src/lib.rs b/crates/wasi-preview1-component-adapter/src/lib.rs index 89a5442ecbfe..492697b2125a 100644 --- a/crates/wasi-preview1-component-adapter/src/lib.rs +++ b/crates/wasi-preview1-component-adapter/src/lib.rs @@ -404,6 +404,7 @@ impl ImportAlloc { ImportAlloc::GetPreopenPath { cur, nth, alloc } => { if align == 1 { let real_alloc = *nth == *cur; + *cur += 1; if real_alloc { alloc.alloc(align, size) } else { diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml index 50058b08d857..af0e7b1f1a8a 100644 --- a/supply-chain/audits.toml +++ b/supply-chain/audits.toml @@ -4465,6 +4465,12 @@ user-id = 1 # Alex Crichton (alexcrichton) start = "2020-06-03" end = "2025-12-05" +[[trusted.wasi]] +criteria = "safe-to-deploy" +user-id = 6825 # Dan Gohman (sunfishcode) +start = "2019-07-22" +end = "2026-01-21" + [[trusted.wasm-bindgen]] criteria = "safe-to-deploy" user-id = 1 # Alex Crichton (alexcrichton) diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock index 5cf9eb6c4021..b6f0fe1c4a0a 100644 --- a/supply-chain/imports.lock +++ b/supply-chain/imports.lock @@ -1140,6 +1140,13 @@ user-id = 1 user-login = "alexcrichton" user-name = "Alex Crichton" +[[publisher.wasi]] +version = "0.14.0+wasi-0.2.3" +when = "2025-01-10" +user-id = 6825 +user-login = "sunfishcode" +user-name = "Dan Gohman" + [[publisher.wasi-common]] version = "27.0.0" when = "2024-11-20" @@ -1629,6 +1636,12 @@ when = "2024-11-13" user-id = 73222 user-login = "wasmtime-publish" +[[publisher.wit-bindgen-rt]] +version = "0.37.0" +when = "2025-01-10" +user-id = 73222 +user-login = "wasmtime-publish" + [[publisher.wit-bindgen-rust]] version = "0.35.0" when = "2024-11-13" diff --git a/tests/all/cli_tests.rs b/tests/all/cli_tests.rs index 7df340064111..ccdeae88980f 100644 --- a/tests/all/cli_tests.rs +++ b/tests/all/cli_tests.rs @@ -2059,6 +2059,18 @@ after empty ])?; Ok(()) } + + #[test] + fn cli_multiple_preopens() -> Result<()> { + run_wasmtime(&[ + "run", + "--dir=/::/a", + "--dir=/::/b", + "--dir=/::/c", + CLI_MULTIPLE_PREOPENS_COMPONENT, + ])?; + Ok(()) + } } #[test] From 898ae93dedec359aef3b10a1b79656798674d179 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Jan 2025 12:02:22 -0800 Subject: [PATCH 3/3] Downgrade `wasip2` dep to 0.13.0 Compat with 1.81.0 MSRV --- Cargo.lock | 16 ++++++++-------- crates/test-programs/Cargo.toml | 2 +- supply-chain/imports.lock | 18 +++++++++--------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d1e48054b144..a67e64480178 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3197,7 +3197,7 @@ dependencies = [ "sha2", "url", "wasi 0.11.0+wasi-snapshot-preview1", - "wasi 0.14.0+wasi-0.2.3", + "wasi 0.13.3+wasi-0.2.2", "wasi-nn", "wit-bindgen", ] @@ -3665,11 +3665,11 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi" -version = "0.14.0+wasi-0.2.3" +version = "0.13.3+wasi-0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d67b0bdfec72b9fbaba698033291c327ef19ce3b34efbdcd7dc402a53850d9" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" dependencies = [ - "wit-bindgen-rt 0.37.0", + "wit-bindgen-rt 0.33.0", ] [[package]] @@ -4996,18 +4996,18 @@ dependencies = [ [[package]] name = "wit-bindgen-rt" -version = "0.35.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "605d5562e971a823cf5a550a9d69cb7144e9b4969a810043127175517a4e1865" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "wit-bindgen-rt" -version = "0.37.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc801b991c56492f87ab3086e786468f75c285a4d73017ab0ebc2fa1aed5d82c" +checksum = "605d5562e971a823cf5a550a9d69cb7144e9b4969a810043127175517a4e1865" dependencies = [ "bitflags 2.6.0", ] diff --git a/crates/test-programs/Cargo.toml b/crates/test-programs/Cargo.toml index ec734b766b03..8ee3186f1c09 100644 --- a/crates/test-programs/Cargo.toml +++ b/crates/test-programs/Cargo.toml @@ -21,4 +21,4 @@ futures = { workspace = true, default-features = false, features = ['alloc'] } url = { workspace = true } sha2 = "0.10.2" base64 = "0.21.0" -wasip2 = { version = "0.14.0", package = 'wasi' } +wasip2 = { version = "0.13.0", package = 'wasi' } diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock index b6f0fe1c4a0a..7cf68ee56214 100644 --- a/supply-chain/imports.lock +++ b/supply-chain/imports.lock @@ -1141,11 +1141,11 @@ user-login = "alexcrichton" user-name = "Alex Crichton" [[publisher.wasi]] -version = "0.14.0+wasi-0.2.3" -when = "2025-01-10" -user-id = 6825 -user-login = "sunfishcode" -user-name = "Dan Gohman" +version = "0.13.3+wasi-0.2.2" +when = "2024-10-08" +user-id = 1 +user-login = "alexcrichton" +user-name = "Alex Crichton" [[publisher.wasi-common]] version = "27.0.0" @@ -1631,14 +1631,14 @@ user-id = 73222 user-login = "wasmtime-publish" [[publisher.wit-bindgen-rt]] -version = "0.35.0" -when = "2024-11-13" +version = "0.33.0" +when = "2024-09-30" user-id = 73222 user-login = "wasmtime-publish" [[publisher.wit-bindgen-rt]] -version = "0.37.0" -when = "2025-01-10" +version = "0.35.0" +when = "2024-11-13" user-id = 73222 user-login = "wasmtime-publish"