From cc98bb064be902b1075f99d6f2ef03b7ef0312c8 Mon Sep 17 00:00:00 2001 From: SneezingCactus Date: Fri, 20 Jun 2025 00:56:14 -0300 Subject: [PATCH] move stdio fd handle checking in fd_determine_type_rights to ensure type is properly set before return --- .../sandboxed-system-primitives/src/posix.c | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c b/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c index bef4c19f3c..6b9344ae80 100644 --- a/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c +++ b/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c @@ -461,24 +461,6 @@ fd_determine_type_rights(os_file_handle fd, __wasi_filetype_t *type, struct __wasi_filestat_t buf; __wasi_errno_t error; - if (os_is_stdin_handle(fd)) { - *rights_base = RIGHTS_STDIN; - *rights_inheriting = RIGHTS_STDIN; - return __WASI_ESUCCESS; - } - - if (os_is_stdout_handle(fd)) { - *rights_base = RIGHTS_STDOUT; - *rights_inheriting = RIGHTS_STDOUT; - return __WASI_ESUCCESS; - } - - if (os_is_stderr_handle(fd)) { - *rights_base = RIGHTS_STDERR; - *rights_inheriting = RIGHTS_STDERR; - return __WASI_ESUCCESS; - } - error = os_fstat(fd, &buf); if (error != __WASI_ESUCCESS) return error; @@ -542,6 +524,21 @@ fd_determine_type_rights(os_file_handle fd, __wasi_filetype_t *type, break; } + if (os_is_stdin_handle(fd)) { + *rights_base = RIGHTS_STDIN; + *rights_inheriting = RIGHTS_STDIN; + } + + if (os_is_stdout_handle(fd)) { + *rights_base = RIGHTS_STDOUT; + *rights_inheriting = RIGHTS_STDOUT; + } + + if (os_is_stderr_handle(fd)) { + *rights_base = RIGHTS_STDERR; + *rights_inheriting = RIGHTS_STDERR; + } + return error; }