diff options
author | Sergey A. Osokin <osa@FreeBSD.org.ru> | 2024-11-22 22:13:18 -0500 |
---|---|---|
committer | Andrew Clayton <a.clayton@nginx.com> | 2024-11-26 18:05:07 +0000 |
commit | 6cc4d706fba2577babc076ad0d2ef145c0c648d7 (patch) | |
tree | 67f7ebd867ada399801ba490478d9824d92d854a | |
parent | 4f041328a9ee343ef87b1e2f571daed0b3cef37c (diff) | |
download | unit-6cc4d706fba2577babc076ad0d2ef145c0c648d7.tar.gz unit-6cc4d706fba2577babc076ad0d2ef145c0c648d7.tar.bz2 |
wasm: Fix build with wasmtime 27.0.0
Wasmtime 27.0.0 adjusted the C API to start flowing through the
directory and file permission bits of the underlying rust
wasi_config_preopen_dir() implementation.
The directory permissions control whether a directory is read-only or
whether you can create/modify files within.
You always need at least WASMTIME_WASI_DIR_PERMS_READ.
The file permissions control whether you can read or read/write files.
WASMTIME_WASI_FILE_PERMS_WRITE seems to imply
WASMTIME_WASI_FILE_PERMS_READ (but we add both just to make it clear
what we want)
[ Permissions tweak and commit message - Andrew ]
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
-rw-r--r-- | src/wasm/nxt_rt_wasmtime.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/wasm/nxt_rt_wasmtime.c b/src/wasm/nxt_rt_wasmtime.c index bf0b0a0f..64ef775d 100644 --- a/src/wasm/nxt_rt_wasmtime.c +++ b/src/wasm/nxt_rt_wasmtime.c @@ -281,7 +281,13 @@ nxt_wasmtime_wasi_init(const nxt_wasm_ctx_t *ctx) wasi_config_inherit_stderr(wasi_config); for (dir = ctx->dirs; dir != NULL && *dir != NULL; dir++) { +#if defined(WASMTIME_VERSION_MAJOR) && (WASMTIME_VERSION_MAJOR >= 27) + wasi_config_preopen_dir(wasi_config, *dir, *dir, + WASMTIME_WASI_DIR_PERMS_READ|WASMTIME_WASI_DIR_PERMS_WRITE, + WASMTIME_WASI_FILE_PERMS_READ|WASMTIME_WASI_FILE_PERMS_WRITE); +#else wasi_config_preopen_dir(wasi_config, *dir, *dir); +#endif } error = wasmtime_context_set_wasi(rt_ctx->ctx, wasi_config); |