From 2361d5c5b92dad92b7966a23395085398d15318f Mon Sep 17 00:00:00 2001 From: cjihrig Date: Thu, 26 Sep 2019 13:55:18 -0400 Subject: [PATCH] wasi: support resolving symlinks This commit adds support for resolving symlinks during path resolution. This commit also ports all of the remaining tests from https://github.com/nodejs/node/pull/27850, with the 'poll' test currently disabled. --- deps/uvwasi/src/uvwasi.c | 24 +++++++++++++++++- test/fixtures/outside.txt | 2 ++ test/fixtures/wasi/subdir/input_link.txt | 1 + test/fixtures/wasi/subdir/loop1 | 1 + test/fixtures/wasi/subdir/loop2 | 1 + test/fixtures/wasi/subdir/outside.txt | 1 + test/wasi/c/follow_symlink.c | 14 ++++++++++ test/wasi/c/poll.c | 31 +++++++++++++++++++++++ test/wasi/c/symlink_escape.c | 9 +++++++ test/wasi/c/symlink_loop.c | 9 +++++++ test/wasi/test-wasi.js | 4 +++ test/wasi/wasm/follow_symlink.wasm | Bin 0 -> 34948 bytes test/wasi/wasm/poll.wasm | Bin 0 -> 34096 bytes test/wasi/wasm/symlink_escape.wasm | Bin 0 -> 33026 bytes test/wasi/wasm/symlink_loop.wasm | Bin 0 -> 33009 bytes 15 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/outside.txt create mode 120000 test/fixtures/wasi/subdir/input_link.txt create mode 120000 test/fixtures/wasi/subdir/loop1 create mode 120000 test/fixtures/wasi/subdir/loop2 create mode 120000 test/fixtures/wasi/subdir/outside.txt create mode 100644 test/wasi/c/follow_symlink.c create mode 100644 test/wasi/c/poll.c create mode 100644 test/wasi/c/symlink_escape.c create mode 100644 test/wasi/c/symlink_loop.c create mode 100755 test/wasi/wasm/follow_symlink.wasm create mode 100755 test/wasi/wasm/poll.wasm create mode 100755 test/wasi/wasm/symlink_escape.wasm create mode 100755 test/wasi/wasm/symlink_loop.wasm diff --git a/deps/uvwasi/src/uvwasi.c b/deps/uvwasi/src/uvwasi.c index 3b663cf912..979b0f20cf 100644 --- a/deps/uvwasi/src/uvwasi.c +++ b/deps/uvwasi/src/uvwasi.c @@ -34,11 +34,12 @@ static uvwasi_errno_t uvwasi__resolve_path(const struct uvwasi_fd_wrap_t* fd, /* TODO(cjihrig): path_len is treated as a size. Need to verify if path_len is really a string length or a size. Also need to verify if it is null terminated. */ - /* TODO(cjihrig): flags is currently unused. */ + uv_fs_t realpath_req; uvwasi_errno_t err; char* abs_path; char* tok; char* ptr; + int realpath_size; int abs_size; int input_is_absolute; int r; @@ -96,6 +97,27 @@ static uvwasi_errno_t uvwasi__resolve_path(const struct uvwasi_fd_wrap_t* fd, ptr += r; } + if ((flags & UVWASI_LOOKUP_SYMLINK_FOLLOW) == UVWASI_LOOKUP_SYMLINK_FOLLOW) { + r = uv_fs_realpath(NULL, &realpath_req, resolved_path, NULL); + if (r == 0) { + realpath_size = strlen(realpath_req.ptr) + 1; + if (realpath_size > PATH_MAX_BYTES) { + err = UVWASI_ENOBUFS; + uv_fs_req_cleanup(&realpath_req); + goto exit; + } + + memcpy(resolved_path, realpath_req.ptr, realpath_size); + } else if (r != UV_ENOENT) { + /* Report errors except ENOENT. */ + err = uvwasi__translate_uv_error(r); + uv_fs_req_cleanup(&realpath_req); + goto exit; + } + + uv_fs_req_cleanup(&realpath_req); + } + /* Verify that the resolved path is still in the sandbox. */ if (resolved_path != strstr(resolved_path, fd->real_path)) { err = UVWASI_ENOTCAPABLE; diff --git a/test/fixtures/outside.txt b/test/fixtures/outside.txt new file mode 100644 index 0000000000..044c4b9614 --- /dev/null +++ b/test/fixtures/outside.txt @@ -0,0 +1,2 @@ +this file is part of the WASI tests. it exists outside of the sandbox, and +should be inaccessible from the WASI tests. diff --git a/test/fixtures/wasi/subdir/input_link.txt b/test/fixtures/wasi/subdir/input_link.txt new file mode 120000 index 0000000000..4a6d09bf82 --- /dev/null +++ b/test/fixtures/wasi/subdir/input_link.txt @@ -0,0 +1 @@ +../input.txt \ No newline at end of file diff --git a/test/fixtures/wasi/subdir/loop1 b/test/fixtures/wasi/subdir/loop1 new file mode 120000 index 0000000000..433d7fdbce --- /dev/null +++ b/test/fixtures/wasi/subdir/loop1 @@ -0,0 +1 @@ +./loop2 \ No newline at end of file diff --git a/test/fixtures/wasi/subdir/loop2 b/test/fixtures/wasi/subdir/loop2 new file mode 120000 index 0000000000..2907735afc --- /dev/null +++ b/test/fixtures/wasi/subdir/loop2 @@ -0,0 +1 @@ +./loop1 \ No newline at end of file diff --git a/test/fixtures/wasi/subdir/outside.txt b/test/fixtures/wasi/subdir/outside.txt new file mode 120000 index 0000000000..2e06947067 --- /dev/null +++ b/test/fixtures/wasi/subdir/outside.txt @@ -0,0 +1 @@ +../../outside.txt \ No newline at end of file diff --git a/test/wasi/c/follow_symlink.c b/test/wasi/c/follow_symlink.c new file mode 100644 index 0000000000..badb0ee267 --- /dev/null +++ b/test/wasi/c/follow_symlink.c @@ -0,0 +1,14 @@ +#include +#include + +int main() { + FILE* file = fopen("/sandbox/subdir/input_link.txt", "r"); + assert(file != NULL); + + char c = fgetc(file); + while (c != EOF) { + int wrote = fputc(c, stdout); + assert(wrote != EOF); + c = fgetc(file); + } +} diff --git a/test/wasi/c/poll.c b/test/wasi/c/poll.c new file mode 100644 index 0000000000..6b6ef71fd6 --- /dev/null +++ b/test/wasi/c/poll.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include + +int main(void) { + struct pollfd fds[2]; + time_t before, now; + int ret; + + fds[0] = (struct pollfd){.fd = 1, .events = POLLOUT, .revents = 0}; + fds[1] = (struct pollfd){.fd = 2, .events = POLLOUT, .revents = 0}; + + ret = poll(fds, 2, -1); + assert(ret == 2); + assert(fds[0].revents == POLLOUT); + assert(fds[1].revents == POLLOUT); + + fds[0] = (struct pollfd){.fd = 0, .events = POLLIN, .revents = 0}; + time(&before); + ret = poll(fds, 1, 2000); + time(&now); + assert(ret == 0); + assert(now - before >= 2); + + sleep(1); + time(&now); + assert(now - before >= 3); + + return 0; +} diff --git a/test/wasi/c/symlink_escape.c b/test/wasi/c/symlink_escape.c new file mode 100644 index 0000000000..32dcc64eeb --- /dev/null +++ b/test/wasi/c/symlink_escape.c @@ -0,0 +1,9 @@ +#include +#include +#include + +int main() { + FILE* file = fopen("/sandbox/subdir/outside.txt", "r"); + assert(file == NULL); + assert(errno == ENOTCAPABLE); +} diff --git a/test/wasi/c/symlink_loop.c b/test/wasi/c/symlink_loop.c new file mode 100644 index 0000000000..23bd70ba60 --- /dev/null +++ b/test/wasi/c/symlink_loop.c @@ -0,0 +1,9 @@ +#include +#include +#include + +int main() { + FILE* file = fopen("/sandbox/subdir/loop1", "r"); + assert(file == NULL); + assert(errno == ELOOP); +} diff --git a/test/wasi/test-wasi.js b/test/wasi/test-wasi.js index 6ef821c1f2..b52c013d24 100644 --- a/test/wasi/test-wasi.js +++ b/test/wasi/test-wasi.js @@ -59,10 +59,12 @@ if (process.argv[2] === 'wasi-child') { runWASI({ test: 'clock_getres' }); runWASI({ test: 'exitcode', exitCode: 120 }); runWASI({ test: 'fd_prestat_get_refresh' }); + runWASI({ test: 'follow_symlink', stdout: 'hello from input.txt\n' }); // runWASI({ test: 'getentropy' }); runWASI({ test: 'getrusage' }); runWASI({ test: 'gettimeofday' }); runWASI({ test: 'notdir' }); + // runWASI({ test: 'poll' }); runWASI({ test: 'preopen_populates' }); runWASI({ test: 'read_file', stdout: 'hello from input.txt\n' }); runWASI({ @@ -71,5 +73,7 @@ if (process.argv[2] === 'wasi-child') { }); runWASI({ test: 'stat' }); runWASI({ test: 'stdin', stdin: 'hello world', stdout: 'hello world' }); + runWASI({ test: 'symlink_escape' }); + runWASI({ test: 'symlink_loop' }); runWASI({ test: 'write_file' }); } diff --git a/test/wasi/wasm/follow_symlink.wasm b/test/wasi/wasm/follow_symlink.wasm new file mode 100755 index 0000000000000000000000000000000000000000..48cf8da1eb28605e93a9611e394a0632b899c4ef GIT binary patch literal 34948 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 OZ|(1H?f2`9^Zx)Dvf2ay literal 0 HcmV?d00001 diff --git a/test/wasi/wasm/symlink_loop.wasm b/test/wasi/wasm/symlink_loop.wasm new file mode 100755 index 0000000000000000000000000000000000000000..3883d5278c7008ad7053529111570c9ff7c8574e GIT binary patch literal 33009 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